Modélisation avancée en UML et en relationnel · Cours 5 - - 1. Modélisation avancée des...

66
Modélisation avancée en UML et en relationnel Stéphane Crozat stph.scenari-community.org/bdd mod3.pdf 25 janvier 2018 Paternité - Partage des Conditions Initiales à l'Identique : http://creativecommons.org /licenses/by-sa/4.0/fr/

Transcript of Modélisation avancée en UML et en relationnel · Cours 5 - - 1. Modélisation avancée des...

Modeacutelisation avanceacutee en UML et en

relationnel

Steacutephane Crozat

stphscenari-communityorgbddmod3pdf

25 janvier 2018Paterniteacute - Partage des Conditions Initiales agrave lIdentique httpcreativecommonsorglicensesby-sa40fr

Table des matiegraveres

Objectifs 4

I - Cours 5

1 Modeacutelisation avanceacutee des associations en UML 5

11 Exercice Entreprise 512 Composition 513 Agreacutegation 714 Explicitation des associations (sens de lecture et rocircle) 715 Associations reacuteflexives 816 Notion de cleacute locale dans les compositions et les associations NM 817 Classe dassociation avec cleacute locale 918 Associations ternaires 10

2 Passage UML-Relationnel Associations avanceacutees 11

21 Trousseau de cleacutes 1122 Transformation des compositions 1223 Transformation des agreacutegations 1324 Transformation des classes dassociation avec cleacute locale 1425 Correspondance entre UML et relationnel 1526 Exercice 1627 Exercice 17

3 Modeacutelisation avanceacutee des associations 11 en relationnel 18

31 Transformation des associations 11 (approche geacuteneacuterale) 1832 Transformation des associations 1111 1933 Transformation des associations 0111 2034 Transformation des associations 0101 2035 Exemple de choix pour une relation 11 21

4 Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes 21

41 Paquetages 2142 Steacutereacuteotype 2343 Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt 2344 Type utilisateurs steacutereacuteotype ltltdataTypegtgt 24

5 Synthegravese sur la modalisation UML et relationnelle 26

51 Quelques eacuteleacutements de stylistique UML 2652 Attention aux cleacutes artificielles 2653 Bibliographie commenteacutee sur la modeacutelisation UML 2754 Synthegravese Les diagrammes de modeacutelisation conceptuelle 29

II - Exercices 30

1 Exercice Lab III 30

2 Exercice Eacutetudiants et UVs (introduction) 31

3 Exercice Super-heacuteros relationnels I 32

4 Exercice Objets Numeacuteriques Libres 32

III - Devoirs 34

1 Exercice Arbre de scegravene 3D 34

IV - Compleacutement Exercices de modeacutelisation suppleacutementaire 35

1 Exercice Appartements agrave louer 35

2 Exercice Objectifs 35

Contenus annexes 38

Questions de synthegravese 51

Solutions des exercices 53

Glossaire 63

Abreacuteviations 64

Bibliographie 65

Webographie 66

4Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Preacuterequis

Savoir faire un MCD UML avec des classes des associations simples de lheacuteritageSavoir faire un MLD relationnel agrave parti dun MCD UML avec des classes des associations simples de lheacuteritage

Objectifs

Cours

5

-

-

1 Modeacutelisation avanceacutee des associations en UMLObjectifs

Maicirctriser le diagramme de classe UML dans le cas de la conception de BD

11 Exercice Entreprise

12 Composition

On appelle composition une association particuliegravere qui possegravede les proprieacuteteacutes suivantes

La composition associe une classe composite et des classes parties tel que tout objet partie appartient agrave un et un seul objet composite Cest donc une association 1N (voire 11)La composition nest pas partageable donc un objet partie ne peut appartenir quagrave un seul objet composite agrave la fois

CoursI

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

[ ]solution ndeg1 [ ] p53

Deacutefinition Association de composition

Composition

6

- -

-

- -

- Le cycle de vie des objets parties est lieacute agrave celui de lobjet composite donc un objet partie disparaicirct quand lobjet composite auquel il est associeacute disparaicirct

La composition est une association particuliegravere (binaire de cardinaliteacute contrainte)La composition nest pas symeacutetrique une classe joue le rocircle de conteneur pour les classes lieacutees elle prend donc un rocircle particulier a prioriLa composition est une agreacutegation avec des contraintes suppleacutementaires (non partageabiliteacute et cycle de vie lieacute)

Notation de la composition en UML

La cardinaliteacute cocircteacute composite est toujours de exactement 1

Cocircteacute partie la cardinaliteacute est libre elle peut ecirctre 01 1 ou bien 1

Un livre

On voit bien ici quun chapitre na de sens que faisant partie dun livre quil ne peut exister dans deux livres diffeacuterents et que si le livre nexiste plus les chapitres le composant non plus

La composition permet dexprimer une association analogue agrave celle qui relie une entiteacute faible agrave une entiteacute

identifiante en modeacutelisation Lentiteacute de type faible correspond agrave un objet partie et lentiteacute identifiante agrave E-A

un objet composite

Une composition avec une classe partie doteacutee dun seul attribut peut seacutecrire avec un attribut multivalueacuteUn attribut composeacute et multivalueacute peut seacutecrire avec une composition

Remarque

Syntaxe Notation dune composition en UML

Attention Composition et cardinaliteacute

Exemple Exemple de composition

Remarque Composition et entiteacutes faibles

Conseil Composition et attribut multivalueacute

Agreacutegation

7

- - Attributs (cf p38)

Agreacutegation (cf p7)

13 Agreacutegation

Lagreacutegation est une association particuliegravere utiliseacutee pour preacuteciser une relation toutpartie (ou ensembleeacuteleacutement) on parle dassociation meacutereacuteologique

Notation de lagreacutegation en UML

La cardinaliteacute peut ecirctre exprimeacutee librement en particulier les instances de la classe Eacuteleacutement peuvent ecirctre associeacutees agrave plusieurs instances de la classe Ensemble et mecircme de plusieurs classes

Lagreacutegation garde toutes les proprieacuteteacutes dune association classique (cardinaliteacute cycle de vie etc) elle ajoute simplement une terminologie un plus preacutecise via la notion de toutpartie

14 Explicitation des associations (sens de lecture et rocircle)

Il est possible dajouter le sens de lecture du verbe caracteacuterisant lassociation sur un diagramme de classe UML afin den faciliter la lecture On ajoute pour cela un signe ou (ou un triangle noir) agrave cocircteacute du nom de lt gt

lassociation

Il est possible de preacuteciser le rocircle joueacute par une ou plusieurs des classes composant une association afin den faciliter la compreacutehension On ajoute pour cela ce rocircle agrave cocircteacute de la classe concerneacutee (parfois dans un petit encadreacute colleacute au trait de lassociation

Rocircle et sens de lecture sur une association

Rappel Voir aussi

Deacutefinition Association dagreacutegation

Syntaxe

Attention

Syntaxe Sens de lecture

Syntaxe Rocircle

Exemple

Notion de cleacute locale dans les compositions et les associations NM

8

- - -

15 Associations reacuteflexives

Une association reacuteflexive est une association qui associe une classe avec elle-mecircme

Association reacuteflexive laquo ami raquo

Lexplicitation des associations est souvent utile dans le cas des associations reacuteflexives non symeacutetrique (ou chaque objet ne joue pas le mecircme rocircle)

Une instance peut ecirctre associeacutee avec elle-mecircme dans le cas de dune association reacuteflexive

Si lon souhaite exprimer le contraire (une instance peut ecirctre associeacutee avec dautres instances de la mecircme classe mais pas avec elle-mecircme)

on ajoute une contrainte en UML (par exemple les personnes ne se marient pas avec elles-mecircmes) que lon traduira en relationnel par une contrainte du type AVEC pk fk

que lon traduira en SQL par une clause du type CHECK pk = fk

16 Notion de cleacute locale dans les compositions et les associations NM

Le concept de cleacute locale appartient au niveau conceptuel il est heacuteriteacute de lentiteacute faible du modegravele conceptuel Entiteacute-Association (eacutequivalent de la composition en UML) Dans une entiteacute faible ou une composition une cleacute de la classe composant est dite locale car elle ne permet didentifier lobjet que si lon connaicirct la classe composite

Dans certaines constructions en UML (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Deacutefinition Association reacuteflexive

Exemple

Meacutethode

Attention Auto-association dans les associations reacuteflexives

Deacutefinition

Attention

Classe dassociation avec cleacute locale

9

Dans une associations NM on peut avoir des (vraies) cleacutes ou des cleacutes locales En revanche dans une composition on na que des cleacutes locales en effet si le composant est identifiable indeacutependamment de son composite cest en geacuteneacuteral quil a une vie propre et donc que lon est pas en preacutesence dune composition

17 Classe dassociation avec cleacute locale

Classe dassociation (cf p40)

Dans lexemple suivant chaque personne peut avoir un emploi dans plusieurs socieacuteteacutes mais elle ne peut pas avoir plusieurs emplois dans une mecircme socieacuteteacute

Emplois

La transformation en relationnelle est coheacuterente avec cette contrainte

1 Socieacuteteacute()2 Personne()3 Emploi(personne=gtPersonne societe=gtSociete postestring salaireinteger quotitenumeric(12))

La speacutecification dune cleacute locale dans emploi par exemple ici le poste permet de lever cette contrainte lorsquon le souhaite en permettant didentifier chaque instance de lassociation ici lemploi dune personne par sa socieacuteteacute

Attention

Rappel

Contrainte inheacuterente agrave la relation NM

Meacutethode Inteacuterecirct de la cleacute locale

Socieacuteteacute()

Personne()

Emploi(personne=gtPersonne societe=gtSociete postestring salaireinteger

quotitenumeric(12))

Associations ternaires

10

La transformation en relationnelle permettra de maintenir la modeacutelisation en ajoutant la cleacute locale agrave la cleacute initiale

1 Socieacuteteacute()2 Personne()3 Emploi(personne=gtPersonne societe=gtSociete postestring salaireinteger quotitenumeric(72))

18 Associations ternaires

Notation dune association ternaire

Il est toujours possible de reacuteeacutecrire une association ternaire avec trois associations binaires en transformant lassociation en classe

Syntaxe

Conseil Ne pas abuser des associations ternaires

Socieacuteteacute()

Personne()

Emploi(personne=gtPersonne societe=gtSociete postestring salaireinteger

quotitenumeric(72))

Passage UML-Relationnel Associations avanceacutees

11

En pratique on nutilise jamais en UML dassociation de degreacute supeacuterieur agrave 3

2 Passage UML-Relationnel Associations avanceacuteesObjectifs

Savoir faire le passage dun scheacutema conceptuel UML agrave un scheacutema relationnel dans tous les cas

Reconnaicirctre les cas de transformation qui se traitent toujours de la mecircme faccedilon et ceux qui neacutecessite une modeacutelisation compleacutementaire

21 Trousseau de cleacutes

En UML et en relationnel il existe plusieurs termes mobilisant le mot laquo cleacute raquo le seul concept qui est commun est le concept de Tous les autres sont speacutecifiques au niveau conceptuel ou relationnelcleacute

Cleacute (key)

Cleacute locale (local key)

Cleacute (key)

Cleacute candidate (candidate key)

Cleacute primaire (primary key) et Cleacute alternative (alternate key)

Cleacute artificielle (surrogate key) et Cleacute naturelle (natural key business key)

Cleacute eacutetrangegravere (foreign key)

Conseil Pas de degreacute supeacuterieur agrave 3

Attention

Rappel Concept commun au niveau UML et relationnel

Rappel Concept speacutecifique au niveau UML

Rappel Concepts speacutecifiques au niveau relationnel

Transformation des compositions

12

- -

Deacutefinition des cleacutes en relationnel

22 Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Transformation des agreacutegations

13

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

23 Transformation des agreacutegations

Les associations de type agreacutegation se traitent de la mecircme faccedilon que les associations classiques

Agreacutegation 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Compleacutement Attributs multivalueacutes et composeacutes

Rappel Voir aussi

Rappel Agreacutegation

Transformation des classes dassociation avec cleacute locale

14

- -

Agreacutegation NM

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2)

24 Transformation des classes dassociation avec cleacute locale

Les attributs de la classe dassociation

sont ajouteacutes agrave la relation issue de lassociation NM la cleacute locale de la classe dassociation est concateacuteneacutee aux cleacutes eacutetrangegraveres composant deacutejagrave la cleacute primaire de la relation dassociation

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Meacutethode Classe dassociation NM

Exercice

15

25 Correspondance entre UML et relationnel

Passsage UML vers Relationnel

Exercice

16

26 ExerciceQuel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

[ ]solution ndeg2 [ ] p53

Exercice

17

27 ExerciceSoit le scheacutema UML suivant

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

[ ]solution ndeg3 [ ] p54

Modeacutelisation avanceacutee des associations 11 en relationnel

18

-

- -

-

-

3 Modeacutelisation avanceacutee des associations 11 en relationnelObjectifs

Savoir faire le passage dun scheacutema conceptuel UML agrave un scheacutema relationnel

Connaicirctre les choix possibles pour le cas de lassociation 11 et savoir faire le meilleur choix

Il existe des formulations conceptuelles en UML qui sont plus deacutelicates agrave traduire au niveau logique en relationnel comme lassociation 11 Ces cas requiegraverent un choix eacuteclaireacute de la part du concepteur

31 Transformation des associations 11 (approche geacuteneacuterale)

Il existe deux solutions pour transformer une association 11

Avec deux relations on traite lassociation 11 comme une association 1N puis lon ajoute une contrainte UNIQUE sur la cleacute eacutetrangegravere pour limiter la cardinaliteacute maximale agrave 1 Avec une seule relation on fusionne les deux classes en une seule relation

Association 11

Une des deux relations est choisie pour porter la cleacute eacutetrangegravere on ajoute les contraintes ou (cleacute candidate) sur la cleacute eacutetrangegravere et si neacutecessaire une UNIQUE KEY

contrainte imposant linstanciation simultaneacutee des deux relations

Classe1(abc=gtClasse2) avec c UNIQUE ou KEY

Classe2(cd)

ou

Classe1(ab)

Classe2(cda=gtClasse1) avec a UNIQUE ou KEY

On creacuteeacute une seule relation contenant lensemble des attributs des deux classes

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Meacutethode Avec deux relations (cleacute eacutetrangegravere)

Meacutethode Avec une relation (fusion)

Transformation des associations 1111

19

- -

- - - - - -

- on choisit une cleacute parmi les cleacutes candidates

Classe12(abcd) avec c UNIQUE ou KEY

ou

Classe21(cdab) avec a UNIQUE ou KEY

Ce choix entre les deux meacutethodes sera conduit par une appreacuteciation du rapport entre

La complexiteacute introduite par le fait davoir deux relations lagrave ou une suffitLa pertinence de la seacuteparation des deux relations dun point de vue seacutemantiqueLes pertes de performance dues agrave leacuteclatement des relationsLes pertes de performance dues au fait davoir une grande relationLes questions de seacutecuriteacute et de sucircreteacute factoriseacutees ou non au niveau des deux relations

Dans le cas dune association 1111 il faudra ajouter une contrainte compleacutementaire

Transformation des associations 1111 (cf p19)

32 Transformation des associations 1111

Le plus souvent cest meacutethode par des relations qui est la plus adapteacutee agrave ce casfusionLorsquelle ne lest pas et que lon choisit deux relations il faut ajouter une contrainte dynamique qui controcirclera que les deux relations sont bien toujours instancieacutees ensembles Notons que la cleacute eacutetrangegravere peut ecirctre choisie comme cleacute primaire

Association 11

Classe12(abcd) avec c KEY

ou

Classe21(cdab) avec a KEY

ou

Classe1(abc=gtClasse2) avec c KEY

Classe2(cd)

Contrainte PROJECTION(Classe1c) = PROJECTION(Classe2c)

ou

Classe1(ab)

Remarque Fusion des relations dans le cas de la traduction de lassociation 11

Compleacutement

Meacutethode Association 1111

Transformation des associations 0111

20

-

-

-

-

Classe2(cda=gtClasse1) avec a KEY

Contrainte PROJECTION(Classe1a) = PROJECTION(Classe2a)

La contrainte dynamique exprimeacutee ici suit le mecircme principe que pour les association 1NContrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p44)

33 Transformation des associations 0111

Le plus souvent cest la meacutethode par les deux relations qui est la plus adapteacutee on choisira toujours la relation cocircteacute 01 pour ecirctre reacutefeacuterenccedilante

Il est possible dutiliser la fusion dans ce cas les cleacutes cocircteacute 01 deviennent des attributs il ne UNIQUE

peuvent plus ecirctre cleacutes pouvant ecirctre NULL

Association 011

Classe1(abc=gtClasse2) avec c KEY

Classe2(cd)

ou

Classe12(cdab) avec a UNIQUE

34 Transformation des associations 0101

On choisit la solution avec deux relations dun cocircteacute ou de lautre la cleacute eacutetrangegravere est associeacute agrave la contrainte ce nest pas une cleacute car elle peut ecirctre nulleUNIQUE

Il nest pas souhaitable de choisir la fusion lune des deux relations pouvant ecirctre nulle on ne pourrait plus trouver de cleacute naturelle

Association 0101

Classe1(abc=gtClasse2) avec c UNIQUE

Classe2(cd)

ou

Compleacutement Contrainte dynamique

Meacutethode Association 0111

Meacutethode Association 0101

Exemple de choix pour une relation 11

21

-

- -

-

-

Classe1(ab)

Classe2(cda=gtClasse1) avec a UNIQUE

35 Exemple de choix pour une relation 11

Soit deux entiteacutes homme et femme et une association mariage de cardinaliteacute 1111 entre ces deux entiteacutes (hommes et femmes sont donc obligatoirement marieacutes)Les entiteacutes homme et femme sont identifieacutees par un attribut nom (dans ce modegravele chaque personne a un nom unique on pourrait remplacer le nom par un identifiant comme le numeacutero de seacutecuriteacute social ou par une cleacute artificielle pour ecirctre plus proche de la reacutealiteacute)

Bien que de type 1111 le choix de la fusion nest pas tregraves opportun car il sagit bien dobjets distincts que lon veut modeacuteliser

On choisira donc plutocirct la repreacutesentation avec deux relationsLa cleacute eacutetrangegravere pourra ecirctre du cocircteacute homme ou femme mecircme si la pratique dominante nous incite agrave la mettre du cocircteacute femmeOn pourra eacutegalement deacutecider de prendre la cleacute eacutetrangegravere comme cleacute primaire

1 homme (nom)2 femme (mariage=gthomme nom) avec nom KEY3 Contrainte PROJ(hommenom) = PROJ(femmemariage)

Si lassociation avait eacuteteacute de cardinaliteacute 0101 (certains hommes et femmes ne sont pas marieacutes) un choix similaire se serait imposeacute avec limpossibiliteacute de choisir la cleacute eacutetrangegravere comme cleacute primaire celle-ci pouvant ecirctre nulle et neacutetant donc plus candidate

1 homme (nom)2 femme (nom mariage=gthomme) avec mariage UNIQUE

4 Autres eacuteleacutements utiles en UML packages et steacutereacuteotypesObjectifs

Maicirctriser le diagramme de classe UML dans le cas de la conception de BD

41 Paquetages

Les paquetages (plus communeacutement appeleacutes ) sont des eacuteleacutements servant agrave organiser un modegravelepackage

Ils sont particuliegraverement utiles degraves que le modegravele comporte de nombreuses classes et que celles-ci peuvent ecirctre trieacutees selon plusieurs aspects structurants

Exemple

Exemple

Deacutefinition Package

homme (nom)

femme (mariage=gthomme nom) avec nom KEY

Contrainte PROJ(hommenom) = PROJ(femmemariage)

homme (nom)

femme (nom mariage=gthomme) avec mariage UNIQUE

Steacutereacuteotype

22

Notation des paquetages en UML

Exemple dutilisation des packages

On repreacutesente chaque classe au sein dun Il est alors possible de faire une preacutesentation globale du packagemodegravele (tous les ) partielle (une partie des ) ou centreacutee sur un seul packages packages package

Pour une repreacutesentation partielle ou centreacutee sur un on repreacutesente les concerneacutes avec leurs package packagesclasses propres ainsi que toutes les classes lieacutees des autres packages (et seulement celles-ci)

Preacutesentation partielle du modegravele centreacutee sur un package

Syntaxe

Exemple

Meacutethode

Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt

23

42 Steacutereacuteotype

Un steacutereacuteotype UML est une syntaxe permettant dajouter de la seacutemantique agrave la modeacutelisation des classes Il permet de deacutefinir des afin de regrouper conceptuellement un ensemble de classes (agrave linstar types de classedune classe qui permet de regrouper conceptuellement un ensemble dobjets)

Cest une meacutecanique de meacuteta-modeacutelisation elle permet deacutetendre le meacuteta-modegravele UML cest agrave dire le modegravele conceptuel du modegravele conceptuel

Un meacuteta-modegravele est le modegravele dun modegravele Par exemple le meacuteta-modegravele UML comprend les concepts de classe attribut association cardinaliteacute composition agreacutegation contraintes annotations On mobilise ces concepts (on les instancie) pour exprimer un modegravele particulier suivant le formalisme UML

Les steacutereacuteotypes permettent donc dajouter au meacuteta-modegravele UML standard celui que tout le monde utilise des concepts locaux pour enrichir le langage de modeacutelisation que lon utilise pour reacutealiser des modegraveles

Notation dun steacutereacuteotype en UML

Un steacutereacuteotype speacutecifique enrichit le meacuteta-modegravele UML mais selon une seacutemantique qui est propre agrave celui qui la poseacute non standard donc La conseacutequence est que pour un tiers linterpreacutetation du steacutereacuteotype nest plus normaliseacutee et sera potentiellement plus facilement erroneacutee Il convient donc de ne pas abuser de cette meacutecanique

Deux ou trois steacutereacuteotypes speacutecifiques correctement deacutefinis sont faciles agrave transmettre plusieurs dizaines repreacutesenteraient un nouveau langage complet agrave apprendre pour le lecteur du modegravele

Il existe des steacutereacuteotypes fournit en standard par UML ou communeacutement utiliseacutes par les modeacutelisateurs Lavantage est quil seront compris plus largement au mecircme titre que le reste du meacuteta-modegravele (ils ont une valeur de standard)

43 Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt

Deacutefinition Steacutereacuteotype UML

Deacutefinition Meacuteta-modegravele

Syntaxe

Conseil Steacutereacuteotypes speacutecifiques et steacutereacuteotypes standard

Syntaxe

Type utilisateurs steacutereacuteotype ltltdataTypegtgt

24

Steacutereacuteotype UML permettant dexprimer une eacutenumeacuteration

Exemple de modeacutelisation UML deacutenumeacuteration

44 Type utilisateurs steacutereacuteotype ltltdataTypegtgt

Les types utilisateurs permettent de deacutefinir des types complexes propres en extension des types primaires (entier chaicircne date)

Steacutereacuteotype dataType

Steacutereacuteotype dataType (exemple)

Cette modeacutelisation est eacutequivalente agrave la modeacutelisation des attributs composeacutes directement dans la classe principale Cest une repreacutesentation plus standard en UML

Exemple

Syntaxe

Exemple

Meacutethode Attributs composeacutes

Synthegravese sur la modalisation UML et relationnelle

25

Quelques eacuteleacutements de stylistique UML

26

-

- -

-

-

-

- - -

- - - -

1

2

3

5 Synthegravese sur la modalisation UML et relationnelle51 Quelques eacuteleacutements de stylistique UML

Toutes les associations doivent ecirctre nommeacutees (sauf composition heacuteritage agreacutegation)Ne pas utiliser de nom geacuteneacuterique pour les Classes comme Entiteacute Classe Objet TrucEacuteviter les noms geacuteneacuteriques pour les associations (comme est associeacute agrave)Attention au sens des compositions et agreacutegation le losange est cocircteacute ensemble et noubliez pas les cardinaliteacutes notamment cocircteacute parties

Nutilisez pas le souligneacute ni les en UML pour identifier les cleacutes preacutefeacuterez la contrainte keyPreacutefeacuterez lheacuteritage aux booleacuteens de typage en UMLLes attributs deacuteriveacutes sont reacuteserveacutes aux deacuterivations simples (des attributs de la mecircme classe) si cest plus complexe preacutefeacuterez des meacutethodes (et dans le doute preacutecisez les modes de calcul sur le scheacutema ou dans une note agrave part)Donnez des exemples de contenu lorsque ce nest pas eacutevident (lorsque le couple nom dattribut et type ne permet pas de faccedilon eacutevidente de comprendre de quoi lon parle)Inutile de deacuteclarer le type booleacuteen en UML utilisez-le directement comme un type de donneacutees connu

Si tous vos heacuteritages sont exclusifs notez-le agrave part pour alleacuteger votre scheacutema (et eacuteviter labondance de XOR)

52 Attention aux cleacutes artificielles

en UML on ne pose jamais de cleacutes artificiellesen relationnel on pose rarement des cleacute artificielles sauf dans le cas de cleacutes eacutetrangegraveres vraiment trop compliqueacuteesen SQL on peut poser des cleacutes artificielles si on a une bonne raison (ce nest donc pas systeacutematique et cest agrave justifier)

On najoutera pas de cleacute artificielle en UML au moment de la modeacutelisation conceptuelle des donneacutees

Formellement en UML la notion de cleacute nexiste pas (contrairement agrave l ) elle est ajouteacutee par les E-A

pratiquants des BD

Logiquement on a pas besoin de cette notion en UML les cleacutes artificielles servent en relationnel et dans certains cas uniquementPratiquement cela peut conduire agrave des situations absurdes (comme enlever au niveau logique des cleacutes artificielles ajouteacutees au niveau conceptuel)

Attention

Conseil

Compleacutement

Fondamental

Cleacutes artificielles et niveau conceptuel

Bibliographie commenteacutee sur la modeacutelisation UML

27

-

-

- -

-

- -

-

-

3

4

5

si on fait du non-relationnel on ne doit pas ajouter de cleacutes artificielles dans certains cas (limbrication typiquement) cela arrive mecircme en relationnel avec la transformation de lheacuteritage (dans certains cas toujours)

Meacutethodologiquement il faut se concentrer agrave chaque phase sur ce qui est important donc au moment du MCD on traduit les besoins on repegravere les contraintes explicites (cleacute uniciteacute non nulliteacute) sans se preacuteoccuper de ce qui sera rendu neacutecessaire par la suite par la modeacutelisation relationnelle (les cleacutes eacutetrangegraveres par exemple) ou limpleacutementation (loptimisation par exemple) Agrave chaque jour suffit sa peine Peacutedagogiquement enfin les deacutebutants ont tendance (agrave cause des environnements de conception graphique comme phpMyAdmin notamment) agrave systeacutematiser les cleacutes artificielles en SQL (on pourrait en discuter) mais eacutegalement agrave ne pas faire le travail de recherche des cleacutes naturelles (au niveau relationnel notamment ce qui est une faute de modeacutelisation) Donc au plus tard on fait intervenir les cleacutes artificielles au plus on a une chance de penser aux cleacutes naturelles

Soit le modegravele relationnel suivant

1 Etu (id numEtu) avec numEtu cleacute 2 UV (id codeUv) avec codeUv cleacute3 Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

La question qui permet dafficher la liste des eacutetudiants (numEtu) avec leurs UVs (codeUv) neacutecessite une jointure des cleacutes artificielles Un modegravele sans ces cleacutes artificielles aurait eacuteteacute plus performant pour agrave causereacutepondre agrave cette question puisque toutes les informations se trouvent dans la relation Inscriptions

1 Etu (numEtu) 2 UV (codeUv) 3 Inscriptions (uv=gtUV etu=gtEtu)

Ne soyez pas systeacutematiqueIl est en effet freacutequent dans un projet reacuteel dadopter des cleacutes artificielles presque systeacutematiquement vous pourrez le faire en connaissance de cause quand vous aurez bien compris pourquoi cest inteacuteressant et quand ccedila ne lest pasLes cleacutes artificielles sont inteacuteressantes pour autre chose que les performances (leacutevolutiviteacute par exemple choisissez-les quand vous savez pourquoi)Les cleacutes artificielles ne dispensent pas de rechercher les cleacutes naturelles Les cleacutes artificielles ne sont pas la seule faccedilon doptimiser une base de donneacutees (indexation deacutenormalisation)

53 Bibliographie commenteacutee sur la modeacutelisation UML

Il existe de nombreux outils de modeacutelisation UML On pourra citer

logiciel Open Source et multi-plateformes facile dusage (qui marche neacuteanmoins mieux sur Linux Dia

que sur Windows)

(version gratuite)Objecteering

Cleacutes artificielles et optimisation est-il toujours plus performant dutiliser des cleacutes artificielles

Conseil

Compleacutement Outils de modeacutelisation UML

Etu (id numEtu) avec numEtu cleacute

UV (id codeUv) avec codeUv cleacute

Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

Etu (numEtu)

UV (codeUv)

Inscriptions (uv=gtUV etu=gtEtu)

Bibliographie commenteacutee sur la modeacutelisation UML

28

- - - - - -

- - - - - -

Agrave voir eacutegalement en Open Source ou (non testeacute par lauteur)ArgoUML EclipseUML

UML2 en action

Pour un aperccedilu plus deacutetailleacute des possibiliteacutes dexpression du diagramme de classe UML lire le chapitre 7 Deacuteveloppement du modegravele statique (pages 133 agrave 163)

On pourra notamment y trouver

Lassociation dagreacutegationLes proprieacuteteacutes dassociationLexpression de rocircles dans les associationsLes attributs de classeLes qualificatifsLes opeacuterations (ou meacutethodes)

Le chapitre donne de plus des conseils meacutethodologiques pour la conception (voir en particulier la synthegravese page 163)

On pourra eacutegalement y trouver

Des principes de choix de modeacutelisation entre attributs et classes et sur la segmentation des classesDes principes de seacutelection des attributs (redondance avec les associations avec les classes etc)Des principes de seacutelection des associationsDes principes de choix de cardinaliteacute (notamment pour la gestion dhistorisation)Des principes de seacutelection des relations de geacuteneacuteralisation (heacuteritage)Des principes dintroduction de meacutetaclasses (type)s

U M L e n Franccedilais

Une tregraves bonne reacutefeacuterence en ligne sur la modeacutelisation UML avec des cours des liens vers la norme etc

Le contenu deacutepasse tregraves largement lusage dUML pour la modeacutelisation de BD (et ne fait dailleurs pas de reacutefeacuterence preacutecise agrave ce sous-ensemble particulier)

On pourra consulter en particulier le chapitre sur les diagrammes de classe httpumlfreefrcoursi-p14html

UML en 5 eacutetapes

On consultera en particulier le tutoriel sur les diagrammes de classe httpdeveloppeurjournaldunetcomtutorielcpt010607cpt_umlintroshtml

Cinq petits conseils pour un scheacutema UML efficace

Compleacutement Modeacutelisation UML

Compleacutement Reacutefeacuterence UML en ligne

Compleacutement Tutoriel sur la modeacutelisation UML

Compleacutement Conseils

Synthegravese Les diagrammes de modeacutelisation conceptuelle

29

-

-

- -

-

- -

-

-

- -

-

- - - -

-

-

(chapitre 3)UML2 par la pratique

Des explications exemples et eacutetudes de cas

54 Synthegravese Les diagrammes de modeacutelisation conceptuelle

Un modegravele conceptuel peut ecirctre repreacutesenteacute sous forme de diagramme E-A ou sous forme de diagramme de classe UML

Classe ou Entiteacute

Attribut ou Proprieacuteteacute

TypeacuteMulti-valueacuteComposeacuteDeacuteriveacute

Meacutethode

ParamegravetresValeur de retour

Association

Association

VerbeCardinaliteacute

Heacuteritage

Heacuteritage dattributsHeacuteritage de meacutethodes

Composition (ou entiteacute faible)

Cardinaliteacute

Compleacutement Pratique

Exercices

30

-

-

-

-

-

-

-

1 2

1

1 Exercice Lab III[20 min]

Description du problegraveme

Un laboratoire souhaite geacuterer les meacutedicaments quil conccediloit

Un meacutedicament est deacutecrit par un nom qui permet de lidentifier En effet il nexiste pas deux meacutedicaments avec le mecircme nom Un meacutedicament comporte une description courte en franccedilais ainsi quune description longue en latin On gegravere aussi le conditionnement du meacutedicament cest agrave dire le nombre de pilules par boicircte (qui est un nombre entier)Agrave chaque meacutedicament on associe une liste deacutedieacutee de contre-indications geacuteneacuteralement plusieurs parfois aucune Les contre-indications sont trieacutees par ordre dimportance Lordre est total est strict pour un meacutedicament donc chaque contre-indication possegravede une importance et il nexiste pas deux contre-indications associeacutees au mecircme meacutedicament avec la mecircme importanceTout meacutedicament possegravede au moins un composant souvent plusieurs Un composant est identifieacute par un code unique et possegravede un intituleacute Tout composant peut intervenir dans la fabrication de plusieurs meacutedicaments Il existe des composants qui ne sont pas utiliseacutes pour fabriquer des meacutedicaments et que lon veut quand mecircme geacuterer

Donneacutees de test

Afin de mateacuterialiser notre base de donneacutees nous obtenons les descriptions suivantes

Le a pour description courte et pour description longue Chourix Meacutedicament contre la chute des chouxlaquo raquoVivamus fermentum semper porta Nunc diam velit adipiscing ut tristique vitae sagittis vel odio laquo

Il est conditionneacute en boicircte de 13Maecenas convallis ullamcorper ultricies Curabitur ornare raquoSes contre-indications sont

Le Chourix ne doit jamais ecirctre pris apregraves minuitLe Chourix ne doit jamais ecirctre mis au contact avec de leau

Ses composants sont le et le HG79 SN50Le a pour description courte et pour Tropas Meacutedicament contre les dysfonctionnements intellectuelslaquo raquodescription longue Suspendisse lectus leo consectetur in tempor sit amet placerat quis neque Etiam laquo

Il est conditionneacute en boicircte de 42luctus porttitor lorem sed suscipit est rutrum non raquoSes contre-indications sont

Le Tropas doit ecirctre gardeacute agrave labri de la lumiegravere du soleil

Son unique composant est le HG79Les composants existants sont

HG79 Vif-argent alleacutegeacute

ExercicesII

Exercice Eacutetudiants et UVs (introduction)

31

- - -

- - HG81 Vif-argent alourdi

SN50 Pur eacutetain

Question 1

Question 2

Question 3

2 Exercice Eacutetudiants et UVs (introduction)[20 min]

On dispose du scheacutema UML ci-apregraves qui deacutecrit des eacutetudiants des UV les notes obtenues par les eacutetudiants agrave ces UV et les diplocircmes dorigine de ces eacutetudiants

Eacutetudiants et UVs

key deacutesigne des cleacutes candidates ici toutes les cleacutes ne sont composeacutees que dun seul attributlocal key deacutesigne une cleacute localeun semestre est de la forme PYYYY ou AYYYY (ougrave YYYY deacutesigneacute une anneacutee sur 4 chiffre) exemple A2013 P2014

Rappel Notion de cleacute locale dans classes dassociation (cf p49)

Effectuez le modegravele conceptuel en UML de ce problegraveme

Indices

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans deacutedieacuteeles donneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition

[ ]solution ndeg4 [ ] p56

En mobilisant les regravegles adeacutequates proposer un modegravele logique de donneacutees correspondant en relationnel Le repeacuterage des domaines et des cleacutes est obligatoire

[ ]solution ndeg5 [ ] p57

Dessiner des tableaux remplis avec les donneacutees fournies en exemple afin de montrer que le modegravele fonctionne selon le besoin exprimeacute initialement On pourra mettre le premier mot seulement des descriptions pour gagner du temps

[ ]solution ndeg6 [ ] p57

Exercice Super-heacuteros relationnels I

32

-

-

Question

3 Exercice Super-heacuteros relationnels I[20 min]

La gamme de super-heacuteros GARVEL veut reacutealiser la base de donneacutees de leurs figurines articuleacutees La socieacuteteacute a fait reacutealiser un modegravele UML qui doit servir de point de deacutepart agrave la mise en œuvre

Modegravele UML Figurines GARVEL

Question

4 Exercice Objets Numeacuteriques Libres[30 min]

Lassociation ONL (Objets Numeacuteriques Libres) est une association de promotion des logiciels libres Elle souhaite exposer sur un site Internet une liste de logiciels libres Ce site sera adosseacute agrave une base de donneacutees relationnelle ou relationnel-objet La premiegravere eacutetape de sa deacutemarche est de reacutealiser un modegravele conceptuel repreacutesentant ce quelle souhaite faire

La base de donneacutees permet de geacuterer des applicationsLes applications sont identifieacutees par leur nom (LibreOffice Gimp) et leur version (10 21) et comportent une description courte et une URL Tous les attributs sont obligatoires Chaque application a une URL uniqueLa base de donneacutees permet de geacuterer des librairies

Traduire le scheacutema en modegravele logique relationnel ( )MLD1

On choisira obligatoirement les cleacutes primaires parmi celles neacutecessitant le plus petit nombre de bits possible pour leur codage

[ ]solution ndeg7 [ ] p57

Transformer le modegravele UML en modegravele relationnel (justifier les passages non triviaux en particulier la relation dheacuteritage)

[ ]solution ndeg8 [ ] p58

Exercice Objets Numeacuteriques Libres

33

-

-

-

-

-

-

-

-

-

-

-

-

Les librairies sont des logiciels mais pas des applications Elles ont les mecircmes attributs que les applications (nom version description courte URL) mais les URL ne sont pas neacutecessairement uniques Les applications peuvent deacutependre de librairies ou dautres applications et les librairies peuvent deacutependre dautres librairies (mais pas dune application)La base de donneacutees permet de geacuterer des composantsLes composants sont inteacutegreacutes agrave une application ou librairie Les composants ont un code interne agrave lapplication ou la librairie quil servent une version et une description courte et une URL Le code et le numeacutero de version permettent didentifier localement le composant au sein de la librairie ou de lapplication la description courte et lURL sont optionnellesLa base de donneacutees permet de geacuterer des licencesLes applications librairies et composants sont attacheacutes agrave une ou plusieurs licences identifieacutees par leur nom (GPL MPL) leur version et leur langue et comportant le texte inteacutegral de la licence Les versions des logiciels et licences sont de type numeacutero de licence majeur point numeacutero de licence mineur comme 10 ou 22La base de donneacutees permet de geacuterer des cateacutegoriesChaque logiciel est rangeacute dans une cateacutegorie principale et plusieurs cateacutegories secondaires Exemple de cateacutegories bureautique dessin multimeacutedia physique

Exemple (factice) de donneacutees

Applications

Scenari 41 une chaicircne eacuteditoriale XML httpscenariorg deacutepend de Libreoffice 43 et de ImageMagick 68Libreoffice 43 une suite bureautique WYSIWYG httplibreofficeorg

Librairie

ImageMagick 68 permet de creacuteer de convertir de modifier et dafficher des images http imagemagickorg

Composant

impng 02 est un composant de ImageMagick 68 permet de compresser une image au format PNG

Toutes ces applications librairies et composants sont disponibles sous une licence LGPL 30 et GPL 30 franccedilaisesToutes ces applications et librairies sont rangeacutees dans la cateacutegorie principale document Scenari est rangeacute dans la cateacutegorie secondaire Eacutedition WYSIWYM Libreoffice dans la cateacutegorie secondaire Bureautique ImageMagick dans la cateacutegorie secondaire Multimeacutedia

Question

Reacutealiser un MCD en UML[ ]solution ndeg9 [ ] p58

Devoirs

34

1 Exercice Arbre de scegravene 3D[30 minutes]

On souhaite pouvoir geacuterer les diffeacuterents eacuteleacutements composant des scegravenes 3D dans une base de donneacutees Une scegravene contient des objets qui eux-mecircmes peuvent appartenir agrave plusieurs scegravenes (au moins une) mais il ne peut y avoir plusieurs fois le mecircme objet dans une mecircme scegravene Dans chaque scegravene les objets peuvent ecirctre visibles ou invisibles Les scegravenes et les objets sont identifieacutes de maniegravere unique par un nom Une scegravene peut ecirctre active ou inactive Un objet a comme proprieacuteteacute une position dans lespace repreacutesenteacutee par un vecteur de reacuteels agrave trois composantes (x y z) Les objets sont organiseacutes de maniegravere hieacuterarchique un objet peut ecirctre parent de plusieurs objets et chaque objet peut avoir au plus un parent Des scripts peuvent ecirctre associeacutes agrave un objet ou agrave une scegravene (agrave lun ou agrave lautre mais pas aux deux) Un script est identifieacute de maniegravere unique par un nom et possegravede eacutegalement un attribut permettant de connaicirctre son eacutetat (actif ou inactif) Un personnage est un objet particulier qui possegravede des animations Une animation est relative agrave un personnage et est identifieacutee de maniegravere locale par un nom Agrave un objet est associeacute un maillage et celui-ci peut ecirctre utiliseacute par plusieurs objets Un maillage est identifieacute de maniegravere unique par un nom et est composeacute de plusieurs eacuteleacutements Chaque eacuteleacutement est relatif agrave un maillage et est identifieacute de maniegravere locale par un numeacutero Il existe exactement trois types deacuteleacutement des nœuds des arrecirctes et des faces Une face est deacutelimiteacutee par trois arrecirctes et chaque arrecircte est deacutelimiteacutee par deux nœuds Plusieurs arrecirctes peuvent partager un mecircme nœud et plusieurs faces peuvent partager une mecircme arrecircte Afin deacutevaluer la complexiteacute dune scegravene on souhaite pouvoir calculer le nombre de faces afficheacutees pour une scegravene donneacutee (cest-agrave-dire la somme du nombre de faces du maillage associeacute aux objets visibles de la scegravene) Un maillage possegravede plusieurs mateacuteriaux identifieacutes de maniegravere unique par un nom Un mateacuteriau peut ecirctre associeacute agrave plusieurs maillages Un mateacuteriau est caracteacuteriseacute par une couleur deacutefinie par un vecteur dentiers agrave quatre composantes rouge vert bleu alpha Un mateacuteriau peut posseacuteder une texture et celle-ci peut ecirctre utiliseacutee par plusieurs mateacuteriaux Une texture est identifieacutee de maniegravere unique par un nom et possegravede comme attribut une image

Question 1

Question 2

DevoirsIII

Proposez une clarification de ce problegraveme On pourra reclasser les informations par grande cateacutegorie scegravene objets scripts

Eacutetablissez un modegravele conceptuel en UML de ce problegraveme

Compleacutement Exercices de modeacutelisation suppleacutementaire

35

1 Exercice Appartements agrave louer[30 min]

Une agence dimmobilier (ventes et locations) veut geacuterer son parc dappartements dans une base de donneacutees Chaque appartement possegravede plusieurs piegraveces qui peuvent ecirctre des piegraveces dhabitation des piegraveces de rangement ou des commoditeacutes

Chaque piegravece a une superficie un nombre de prises eacutelectriques et des meubles Pour ces derniers on veut enregistrer le nom du modegravele et le type (chaise lit four etc) Rien nempecircche quune piegravece comporte plusieurs meubles identiques (par exemple plusieurs chaises PIN IQUEA) Les piegraveces dhabitation ont une ou plusieurs fenecirctres les piegraveces de rangement ont une ou plusieurs eacutetagegraveres et une surface de rangement utile totale On veut aussi savoir dans quelles piegraveces de rangement se situent les tableaux eacutelectriques de lappartement Finalement les piegraveces commoditeacutes peuvent ecirctre de trois types cuisine toilette ou salle de bain

Lagence veut aussi enregistrer les portes entre les diffeacuterentes piegraveces Une porte peut ecirctre agrave simple battant double battant coulissante ou une simple ouverture

Chaque appartement a une adresse une superficie totale (qui est la somme des superficies des piegraveces) et un type qui est la lettre T suivie du nombre de piegraveces dhabitation de lappartement Pour un appartement donneacute chaque piegravece est identifieacutee par un numeacutero (commenccedilant au numeacutero 1)

Lagence veut eacutegalement enregistrer le quartier ougrave se trouve lappartement auquel est lieacute un prix par megravetre carreacute Finalement elle veut garder un historique de lhistoire de lappartement les peacuteriodes pour lesquelles il est libre occupeacute en travaux ou vendu

Question

2 Exercice Objectifs[40 min]

Vous prenez la preacutesidence de lassociation Objectifs dont lobjet est daider ses eacutetudiants membres agrave mener des projets dans le cadre de leurs eacutetudes

Compleacutement Exercices de modeacutelisation suppleacutementaire

IV

Reacutealisez le diagramme UML reacutepondant aux besoins de cette agence[ ]solution ndeg10 [ ] p59

Exercice Objectifs

36

- - -

-

-

- - -

Vous constatez en arrivant dans lassociation que personne ne sait exactement quels sont les projets en cours ni qui fait quoi dans les projets Vous ne parvenez pas non plus agrave obtenir une liste exacte des partenaires sur lesquels lassociation peut compter La seule chose sur laquelle vous parvenez agrave mettre la main est un fichier tableur vaguement agrave jour

Vous deacutecidez quil est plus que temps de mettre en place une base de donneacutees afin dassurer la bonne gestion des informations les plus importantes pour lassociation Vous vous attachez pour cela agrave reacutealiser une analyse des besoins

Analysez les documents ci-apregraves

Etat des projets

Eacutetat des projets de lassociation Objectifs

Recueil de besoins

Agrave partir de leacutetude du fonctionnement actuel de lassociation vous relevez les choses importantes agrave geacuterer suivantes

Les membres de lassociation geacuteneacuteralement identifieacutes par leur preacutenomLes projets geacutereacutes par lassociation avec des dates de deacutebut et de fin preacutecises et un chef de projetLe deacutetail des tacircches de chaque projet avec leurs dates de deacutebut et de fin aussi et la liste de tous les membres qui y participentLa liste des partenaires des projets avec leur rocircle preacutecis pour chacun des projets auxquels ils participent

Afin de mieux geacuterer les attributions des projets il serait eacutegalement inteacuteressant de creacuteer une liste des speacutecialiteacutes correspondant agrave ce qui ce fait dans lassociation et daffecter une speacutecialiteacute agrave chaque membre ainsi quune agrave chaque projet pour voir si ce sont bien les membres les mieux adapteacutes qui travaille sur les projets

Recueil de donneacutees

Les discussions avec les anciens membres de lassociation vous apprennent les choses suivantes

Lassociation a termineacute de geacuterer les trois projets Comeacutedie Musicale geacutereacutee par Nathalie sur les trois premiers mois du semestre dautomne 1001 Science en fecircte geacutereacutee par Pierre sur tout le semestre de printemps 1003 et Nuit du picolo geacutereacutee par Julien en novembre 1001Les speacutecialiteacutes recenseacutees pour le moment sont Ville Universiteacute Sport Entreprise Culture InternationalIl faut au moins dix membres agrave lassociation (sinon elle ferme) recruter ceux qui manquentAidez lassociation agrave diviser ses projets en tacircches

Exercice Objectifs

37

- Les partenaires suivants aident ou ont aideacute lassociation la mairie pour la comeacutedie musicale et la science en fecircte qui apporte un soutien financier le ministegravere de la culture qui apporte son soutien logistique agrave la science en fecircte lassociation des commerccedilants de la ville qui apporte son soutien publicitaire agrave la comeacutedie musicale 1664 qui offre ses biegraveres agrave moitieacute prix pour la nuit du Picolo

Question 1

Question 2

Question 3

Afin de preacuteparer une analyse des besoins sommaire listez les donneacutees que vous devrez geacuterer agrave laide des documents et recueils de discussion agrave votre disposition Faites des hypothegraveses lorsque les donneacutees sont incomplegravetes ou incoheacuterentes

[ ]solution ndeg11 [ ] p59

Reacutealiser le MCD en UML et en E-A agrave partir des donneacutees preacutepareacutees dans la question preacuteceacutedente[ ]solution ndeg12 [ ] p60

Reacutealiser le MLD en relationnel en traduisant votre MCD[ ]solution ndeg13 [ ] p61

Contenus annexes

38Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

- - -

gt Attributs

Un attribut est une information eacuteleacutementaire qui caracteacuterise une classe et dont la valeur deacutepend de lobjet instancieacute

Le domaine des valeurs que peut prendre lattribut est fixeacute a prioriUn attribut est typeacute

Il peut prendre plusieurs valeurs distinctes dans son domaineUn attribut peut ecirctre multivalueacute Sa valeur alors est une fonction sur dautres attributs de la classeUn attribut peut ecirctre deacuteriveacute

(ou composite) Il joue alors le rocircle dun groupe dattributs (par Un attribut peut ecirctre composeacuteexemple une adresse peut ecirctre un attribut composeacute des attributs numeacutero type de voie nom de la voie) Cette notion renvoie agrave la notion de variable de type dans les langages de Record

programmation classiques

En UML on preacutefegravere lusage de meacutethodes aux attributs deacuteriveacutes On utilisera toujours des meacutethodes degraves que la valeur de lattribut deacuteriveacute deacutepend dautres attributs exteacuterieurs agrave sa classeEn UML on preacutefegravere lusage de compositions aux attributs composeacutes On utilisera toujours des compositions pour les attributs composeacutes et multivalueacutes

1 attributtype2 attribut_multivalueacute[nbMinValeursnbMaxValeurs]type3 attribut_deacuteriveacutetype4 attribut_composeacute5   - sous-attribut1type6   - sous-attribut2type7   -

Contenus annexes

Deacutefinition Attribut

Attention On utilise peu les attributs deacuteriveacutes et composeacutes en UML

Syntaxe

attributtype

attribut_multivalueacute[nbMinValeursnbMaxValeurs]type

attribut_deacuteriveacutetype

attribut_composeacute

  - sous-attribut1type

  - sous-attribut2type

  -

Contenus annexes

39Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Repreacutesentation dattributs en UML

Dans cet exemple les attributs Nom Preacutenom sont de type lun de 20 caractegraveres et lautre de 10 stringtandis que DateNaissance est de type et Age de type Preacutenom est un attribut multivalueacute ici date integerune personne peut avoir de 1 agrave 3 preacutenoms Age est un attribut deacuteriveacute il est calculeacute par une fonction sur DateNaissance

Meacutethodes (cf p39)

Composition (cf p5)

gt Meacutethodes

Une meacutethode (ou opeacuteration) est une fonction associeacutee agrave une classe dobjet qui permet dagir sur les objets de la classe ou qui permet agrave ces objets de renvoyer des valeurs (calculeacutees en fonction de paramegravetres)

1 methode(paramegravetres)type

Pour la modeacutelisation des bases de donneacutees les meacutethodes sont surtout utiliseacutees pour repreacutesenter des donneacutees calculeacutees (agrave linstar des attributs deacuteriveacutees) ou pour mettre en exergue des fonctions importantes du systegraveme cible Seules les meacutethodes les plus importantes sont repreacutesenteacutees lapproche est moins systeacutematique quen modeacutelisation objet par exemple

Lors de la transformation du modegravele conceptuel UML en modegravele logique relationnel les meacutethodes ne Leur repeacuterage au niveau conceptuel sert donc surtout daide-seront geacuteneacuteralement pas impleacutementeacutees

meacutemoire pour limpleacutementation au niveau applicatif

Exemple La classe Personne

Compleacutement Voir aussi

Deacutefinition Meacutethode

Syntaxe

Remarque Meacutethodes et modeacutelisation de BD

Remarque Meacutethodes relationnel relationnel-objet

methode(paramegravetres)type

Contenus annexes

40Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Au contraire un modegravele logique relationnel-objet permettra limpleacutementation de meacutethodes directement associeacutees agrave des tables Leur repeacuterage au niveau conceptuel est donc encore plus important

Transformation des meacutethodes par des vues (cf p40)

gt Transformation des meacutethodes par des vues

Lorsquune meacutethode est speacutecifieacutee sur un diagramme UML pour une classe C si cette meacutethode est une fonction relationnelle (elle renvoie une unique valeur et elle peut ecirctre reacutesolue par une requecircte SQL) alors on creacutee une vue qui reprend les attributs de la classe C et ajoute des colonnes calculeacutees pour les meacutethodes

Les attributs deacuteriveacutes eacutetant apparenteacutes agrave des meacutethodes ils peuvent eacutegalement ecirctre geacutereacutes par des vues

gt Classe dassociation

On utilise la notation des classes dassociation lorsque lon souhaite ajouter des proprieacuteteacutes agrave une association

Notation dune classe dassociation en UML

On reacuteserve en geacuteneacuteral les classes dassociation aux associations NM

Il est toujours possible de reacuteduire une classe dassociation sur une association 1N en migrant ses attributs sur la classe cocircteacute N et cest en geacuteneacuteral plus lisible ainsi

Compleacutement

Meacutethode

Remarque Attributs deacuteriveacutes

Deacutefinition Classe dassociation

Syntaxe Notation dune classe dassociation en UML

Meacutethode

Contenus annexes

41Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

-

Emplois

Selon le standard UML une classe dassociation est une classe et agrave ce titre elle peut ecirctre mobiliseacutee dans dautres associations ou dans des heacuteritages Nous deacuteconseillons neacuteanmoins ces notations qui ont tendance agrave complexifier la lecture et la transformation du diagramme

Nous conseillons donc de ne jamais associer une classe dassociation

gt Transformation des attributs

Pour chaque attribut eacuteleacutementaire et monovalueacute dune classe

on creacutee un attribut correspondant

Attribut

Classe1(ab)

Pour chaque attribut composite comprenant N sous-attributs dune classe

on creacutee N attributs correspondantsdont les noms sont la concateacutenation du nom de lattribut composite avec celui du sous-attribut

Exemple Exemple de classe dassociation

Conseil

Meacutethode Attributs simples

Meacutethode Attributs composites

Contenus annexes

42Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- - - -

Attribut composeacute

Classe1(ab_b1b_b2)

Pour chaque attribut multivalueacute b dune classe C

on creacutee une nouvelle relation RBqui comprend un attribut monovalueacute correspondant agrave bplus la cleacute de la relation repreacutesentant C la cleacute de RB est la concateacutenation des deux attributs

Attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Dans le cas ougrave le nombre maximum de est fini et petit on peut eacutegalement adopter la transformation b

suivante Classe1(ab1b2b3b4b5b6b7b8b9b10)

Si le nombre dattributs est infini ( ) cest impossible sil est trop grand ce nest pas souhaitableb[1]

On combine les regravegles eacutenonceacutees pour les attributs composeacutes et pour les attributs multivalueacutes

Attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Transformation des compositions (cf p42)

Meacutethode Attributs multivalueacutes

Meacutethode Attributs multivalueacutes (meacutethode alternative)

Meacutethode Attributs composeacutes multivalueacutes

Rappel Voir aussi

Contenus annexes

43Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

gt Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Compleacutement Attributs multivalueacutes et composeacutes

Contenus annexes

44Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

Rappel Voir aussi

Rappel

Meacutethode

Contenus annexes

45Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p48)

gt Transformation des associations 1N

Pour chaque association binaire de type 1N

on ajoute agrave la relation cocircteacute N une cleacute eacutetrangegravere vers la relation cocircteacute 1

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Meacutethode

Contenus annexes

46Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Association 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Contrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p46)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

R1

Compleacutement

Rappel

Meacutethode

Contenus annexes

47Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p47)

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Deacutefinition Projection

Contenus annexes

48Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Deacutefinition Projection

Contenus annexes

49Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Transformation des classes dassociation

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de lassociation NM

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Meacutethode Classe dassociation NM

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Table des matiegraveres

Objectifs 4

I - Cours 5

1 Modeacutelisation avanceacutee des associations en UML 5

11 Exercice Entreprise 512 Composition 513 Agreacutegation 714 Explicitation des associations (sens de lecture et rocircle) 715 Associations reacuteflexives 816 Notion de cleacute locale dans les compositions et les associations NM 817 Classe dassociation avec cleacute locale 918 Associations ternaires 10

2 Passage UML-Relationnel Associations avanceacutees 11

21 Trousseau de cleacutes 1122 Transformation des compositions 1223 Transformation des agreacutegations 1324 Transformation des classes dassociation avec cleacute locale 1425 Correspondance entre UML et relationnel 1526 Exercice 1627 Exercice 17

3 Modeacutelisation avanceacutee des associations 11 en relationnel 18

31 Transformation des associations 11 (approche geacuteneacuterale) 1832 Transformation des associations 1111 1933 Transformation des associations 0111 2034 Transformation des associations 0101 2035 Exemple de choix pour une relation 11 21

4 Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes 21

41 Paquetages 2142 Steacutereacuteotype 2343 Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt 2344 Type utilisateurs steacutereacuteotype ltltdataTypegtgt 24

5 Synthegravese sur la modalisation UML et relationnelle 26

51 Quelques eacuteleacutements de stylistique UML 2652 Attention aux cleacutes artificielles 2653 Bibliographie commenteacutee sur la modeacutelisation UML 2754 Synthegravese Les diagrammes de modeacutelisation conceptuelle 29

II - Exercices 30

1 Exercice Lab III 30

2 Exercice Eacutetudiants et UVs (introduction) 31

3 Exercice Super-heacuteros relationnels I 32

4 Exercice Objets Numeacuteriques Libres 32

III - Devoirs 34

1 Exercice Arbre de scegravene 3D 34

IV - Compleacutement Exercices de modeacutelisation suppleacutementaire 35

1 Exercice Appartements agrave louer 35

2 Exercice Objectifs 35

Contenus annexes 38

Questions de synthegravese 51

Solutions des exercices 53

Glossaire 63

Abreacuteviations 64

Bibliographie 65

Webographie 66

4Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Preacuterequis

Savoir faire un MCD UML avec des classes des associations simples de lheacuteritageSavoir faire un MLD relationnel agrave parti dun MCD UML avec des classes des associations simples de lheacuteritage

Objectifs

Cours

5

-

-

1 Modeacutelisation avanceacutee des associations en UMLObjectifs

Maicirctriser le diagramme de classe UML dans le cas de la conception de BD

11 Exercice Entreprise

12 Composition

On appelle composition une association particuliegravere qui possegravede les proprieacuteteacutes suivantes

La composition associe une classe composite et des classes parties tel que tout objet partie appartient agrave un et un seul objet composite Cest donc une association 1N (voire 11)La composition nest pas partageable donc un objet partie ne peut appartenir quagrave un seul objet composite agrave la fois

CoursI

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

[ ]solution ndeg1 [ ] p53

Deacutefinition Association de composition

Composition

6

- -

-

- -

- Le cycle de vie des objets parties est lieacute agrave celui de lobjet composite donc un objet partie disparaicirct quand lobjet composite auquel il est associeacute disparaicirct

La composition est une association particuliegravere (binaire de cardinaliteacute contrainte)La composition nest pas symeacutetrique une classe joue le rocircle de conteneur pour les classes lieacutees elle prend donc un rocircle particulier a prioriLa composition est une agreacutegation avec des contraintes suppleacutementaires (non partageabiliteacute et cycle de vie lieacute)

Notation de la composition en UML

La cardinaliteacute cocircteacute composite est toujours de exactement 1

Cocircteacute partie la cardinaliteacute est libre elle peut ecirctre 01 1 ou bien 1

Un livre

On voit bien ici quun chapitre na de sens que faisant partie dun livre quil ne peut exister dans deux livres diffeacuterents et que si le livre nexiste plus les chapitres le composant non plus

La composition permet dexprimer une association analogue agrave celle qui relie une entiteacute faible agrave une entiteacute

identifiante en modeacutelisation Lentiteacute de type faible correspond agrave un objet partie et lentiteacute identifiante agrave E-A

un objet composite

Une composition avec une classe partie doteacutee dun seul attribut peut seacutecrire avec un attribut multivalueacuteUn attribut composeacute et multivalueacute peut seacutecrire avec une composition

Remarque

Syntaxe Notation dune composition en UML

Attention Composition et cardinaliteacute

Exemple Exemple de composition

Remarque Composition et entiteacutes faibles

Conseil Composition et attribut multivalueacute

Agreacutegation

7

- - Attributs (cf p38)

Agreacutegation (cf p7)

13 Agreacutegation

Lagreacutegation est une association particuliegravere utiliseacutee pour preacuteciser une relation toutpartie (ou ensembleeacuteleacutement) on parle dassociation meacutereacuteologique

Notation de lagreacutegation en UML

La cardinaliteacute peut ecirctre exprimeacutee librement en particulier les instances de la classe Eacuteleacutement peuvent ecirctre associeacutees agrave plusieurs instances de la classe Ensemble et mecircme de plusieurs classes

Lagreacutegation garde toutes les proprieacuteteacutes dune association classique (cardinaliteacute cycle de vie etc) elle ajoute simplement une terminologie un plus preacutecise via la notion de toutpartie

14 Explicitation des associations (sens de lecture et rocircle)

Il est possible dajouter le sens de lecture du verbe caracteacuterisant lassociation sur un diagramme de classe UML afin den faciliter la lecture On ajoute pour cela un signe ou (ou un triangle noir) agrave cocircteacute du nom de lt gt

lassociation

Il est possible de preacuteciser le rocircle joueacute par une ou plusieurs des classes composant une association afin den faciliter la compreacutehension On ajoute pour cela ce rocircle agrave cocircteacute de la classe concerneacutee (parfois dans un petit encadreacute colleacute au trait de lassociation

Rocircle et sens de lecture sur une association

Rappel Voir aussi

Deacutefinition Association dagreacutegation

Syntaxe

Attention

Syntaxe Sens de lecture

Syntaxe Rocircle

Exemple

Notion de cleacute locale dans les compositions et les associations NM

8

- - -

15 Associations reacuteflexives

Une association reacuteflexive est une association qui associe une classe avec elle-mecircme

Association reacuteflexive laquo ami raquo

Lexplicitation des associations est souvent utile dans le cas des associations reacuteflexives non symeacutetrique (ou chaque objet ne joue pas le mecircme rocircle)

Une instance peut ecirctre associeacutee avec elle-mecircme dans le cas de dune association reacuteflexive

Si lon souhaite exprimer le contraire (une instance peut ecirctre associeacutee avec dautres instances de la mecircme classe mais pas avec elle-mecircme)

on ajoute une contrainte en UML (par exemple les personnes ne se marient pas avec elles-mecircmes) que lon traduira en relationnel par une contrainte du type AVEC pk fk

que lon traduira en SQL par une clause du type CHECK pk = fk

16 Notion de cleacute locale dans les compositions et les associations NM

Le concept de cleacute locale appartient au niveau conceptuel il est heacuteriteacute de lentiteacute faible du modegravele conceptuel Entiteacute-Association (eacutequivalent de la composition en UML) Dans une entiteacute faible ou une composition une cleacute de la classe composant est dite locale car elle ne permet didentifier lobjet que si lon connaicirct la classe composite

Dans certaines constructions en UML (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Deacutefinition Association reacuteflexive

Exemple

Meacutethode

Attention Auto-association dans les associations reacuteflexives

Deacutefinition

Attention

Classe dassociation avec cleacute locale

9

Dans une associations NM on peut avoir des (vraies) cleacutes ou des cleacutes locales En revanche dans une composition on na que des cleacutes locales en effet si le composant est identifiable indeacutependamment de son composite cest en geacuteneacuteral quil a une vie propre et donc que lon est pas en preacutesence dune composition

17 Classe dassociation avec cleacute locale

Classe dassociation (cf p40)

Dans lexemple suivant chaque personne peut avoir un emploi dans plusieurs socieacuteteacutes mais elle ne peut pas avoir plusieurs emplois dans une mecircme socieacuteteacute

Emplois

La transformation en relationnelle est coheacuterente avec cette contrainte

1 Socieacuteteacute()2 Personne()3 Emploi(personne=gtPersonne societe=gtSociete postestring salaireinteger quotitenumeric(12))

La speacutecification dune cleacute locale dans emploi par exemple ici le poste permet de lever cette contrainte lorsquon le souhaite en permettant didentifier chaque instance de lassociation ici lemploi dune personne par sa socieacuteteacute

Attention

Rappel

Contrainte inheacuterente agrave la relation NM

Meacutethode Inteacuterecirct de la cleacute locale

Socieacuteteacute()

Personne()

Emploi(personne=gtPersonne societe=gtSociete postestring salaireinteger

quotitenumeric(12))

Associations ternaires

10

La transformation en relationnelle permettra de maintenir la modeacutelisation en ajoutant la cleacute locale agrave la cleacute initiale

1 Socieacuteteacute()2 Personne()3 Emploi(personne=gtPersonne societe=gtSociete postestring salaireinteger quotitenumeric(72))

18 Associations ternaires

Notation dune association ternaire

Il est toujours possible de reacuteeacutecrire une association ternaire avec trois associations binaires en transformant lassociation en classe

Syntaxe

Conseil Ne pas abuser des associations ternaires

Socieacuteteacute()

Personne()

Emploi(personne=gtPersonne societe=gtSociete postestring salaireinteger

quotitenumeric(72))

Passage UML-Relationnel Associations avanceacutees

11

En pratique on nutilise jamais en UML dassociation de degreacute supeacuterieur agrave 3

2 Passage UML-Relationnel Associations avanceacuteesObjectifs

Savoir faire le passage dun scheacutema conceptuel UML agrave un scheacutema relationnel dans tous les cas

Reconnaicirctre les cas de transformation qui se traitent toujours de la mecircme faccedilon et ceux qui neacutecessite une modeacutelisation compleacutementaire

21 Trousseau de cleacutes

En UML et en relationnel il existe plusieurs termes mobilisant le mot laquo cleacute raquo le seul concept qui est commun est le concept de Tous les autres sont speacutecifiques au niveau conceptuel ou relationnelcleacute

Cleacute (key)

Cleacute locale (local key)

Cleacute (key)

Cleacute candidate (candidate key)

Cleacute primaire (primary key) et Cleacute alternative (alternate key)

Cleacute artificielle (surrogate key) et Cleacute naturelle (natural key business key)

Cleacute eacutetrangegravere (foreign key)

Conseil Pas de degreacute supeacuterieur agrave 3

Attention

Rappel Concept commun au niveau UML et relationnel

Rappel Concept speacutecifique au niveau UML

Rappel Concepts speacutecifiques au niveau relationnel

Transformation des compositions

12

- -

Deacutefinition des cleacutes en relationnel

22 Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Transformation des agreacutegations

13

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

23 Transformation des agreacutegations

Les associations de type agreacutegation se traitent de la mecircme faccedilon que les associations classiques

Agreacutegation 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Compleacutement Attributs multivalueacutes et composeacutes

Rappel Voir aussi

Rappel Agreacutegation

Transformation des classes dassociation avec cleacute locale

14

- -

Agreacutegation NM

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2)

24 Transformation des classes dassociation avec cleacute locale

Les attributs de la classe dassociation

sont ajouteacutes agrave la relation issue de lassociation NM la cleacute locale de la classe dassociation est concateacuteneacutee aux cleacutes eacutetrangegraveres composant deacutejagrave la cleacute primaire de la relation dassociation

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Meacutethode Classe dassociation NM

Exercice

15

25 Correspondance entre UML et relationnel

Passsage UML vers Relationnel

Exercice

16

26 ExerciceQuel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

[ ]solution ndeg2 [ ] p53

Exercice

17

27 ExerciceSoit le scheacutema UML suivant

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

[ ]solution ndeg3 [ ] p54

Modeacutelisation avanceacutee des associations 11 en relationnel

18

-

- -

-

-

3 Modeacutelisation avanceacutee des associations 11 en relationnelObjectifs

Savoir faire le passage dun scheacutema conceptuel UML agrave un scheacutema relationnel

Connaicirctre les choix possibles pour le cas de lassociation 11 et savoir faire le meilleur choix

Il existe des formulations conceptuelles en UML qui sont plus deacutelicates agrave traduire au niveau logique en relationnel comme lassociation 11 Ces cas requiegraverent un choix eacuteclaireacute de la part du concepteur

31 Transformation des associations 11 (approche geacuteneacuterale)

Il existe deux solutions pour transformer une association 11

Avec deux relations on traite lassociation 11 comme une association 1N puis lon ajoute une contrainte UNIQUE sur la cleacute eacutetrangegravere pour limiter la cardinaliteacute maximale agrave 1 Avec une seule relation on fusionne les deux classes en une seule relation

Association 11

Une des deux relations est choisie pour porter la cleacute eacutetrangegravere on ajoute les contraintes ou (cleacute candidate) sur la cleacute eacutetrangegravere et si neacutecessaire une UNIQUE KEY

contrainte imposant linstanciation simultaneacutee des deux relations

Classe1(abc=gtClasse2) avec c UNIQUE ou KEY

Classe2(cd)

ou

Classe1(ab)

Classe2(cda=gtClasse1) avec a UNIQUE ou KEY

On creacuteeacute une seule relation contenant lensemble des attributs des deux classes

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Meacutethode Avec deux relations (cleacute eacutetrangegravere)

Meacutethode Avec une relation (fusion)

Transformation des associations 1111

19

- -

- - - - - -

- on choisit une cleacute parmi les cleacutes candidates

Classe12(abcd) avec c UNIQUE ou KEY

ou

Classe21(cdab) avec a UNIQUE ou KEY

Ce choix entre les deux meacutethodes sera conduit par une appreacuteciation du rapport entre

La complexiteacute introduite par le fait davoir deux relations lagrave ou une suffitLa pertinence de la seacuteparation des deux relations dun point de vue seacutemantiqueLes pertes de performance dues agrave leacuteclatement des relationsLes pertes de performance dues au fait davoir une grande relationLes questions de seacutecuriteacute et de sucircreteacute factoriseacutees ou non au niveau des deux relations

Dans le cas dune association 1111 il faudra ajouter une contrainte compleacutementaire

Transformation des associations 1111 (cf p19)

32 Transformation des associations 1111

Le plus souvent cest meacutethode par des relations qui est la plus adapteacutee agrave ce casfusionLorsquelle ne lest pas et que lon choisit deux relations il faut ajouter une contrainte dynamique qui controcirclera que les deux relations sont bien toujours instancieacutees ensembles Notons que la cleacute eacutetrangegravere peut ecirctre choisie comme cleacute primaire

Association 11

Classe12(abcd) avec c KEY

ou

Classe21(cdab) avec a KEY

ou

Classe1(abc=gtClasse2) avec c KEY

Classe2(cd)

Contrainte PROJECTION(Classe1c) = PROJECTION(Classe2c)

ou

Classe1(ab)

Remarque Fusion des relations dans le cas de la traduction de lassociation 11

Compleacutement

Meacutethode Association 1111

Transformation des associations 0111

20

-

-

-

-

Classe2(cda=gtClasse1) avec a KEY

Contrainte PROJECTION(Classe1a) = PROJECTION(Classe2a)

La contrainte dynamique exprimeacutee ici suit le mecircme principe que pour les association 1NContrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p44)

33 Transformation des associations 0111

Le plus souvent cest la meacutethode par les deux relations qui est la plus adapteacutee on choisira toujours la relation cocircteacute 01 pour ecirctre reacutefeacuterenccedilante

Il est possible dutiliser la fusion dans ce cas les cleacutes cocircteacute 01 deviennent des attributs il ne UNIQUE

peuvent plus ecirctre cleacutes pouvant ecirctre NULL

Association 011

Classe1(abc=gtClasse2) avec c KEY

Classe2(cd)

ou

Classe12(cdab) avec a UNIQUE

34 Transformation des associations 0101

On choisit la solution avec deux relations dun cocircteacute ou de lautre la cleacute eacutetrangegravere est associeacute agrave la contrainte ce nest pas une cleacute car elle peut ecirctre nulleUNIQUE

Il nest pas souhaitable de choisir la fusion lune des deux relations pouvant ecirctre nulle on ne pourrait plus trouver de cleacute naturelle

Association 0101

Classe1(abc=gtClasse2) avec c UNIQUE

Classe2(cd)

ou

Compleacutement Contrainte dynamique

Meacutethode Association 0111

Meacutethode Association 0101

Exemple de choix pour une relation 11

21

-

- -

-

-

Classe1(ab)

Classe2(cda=gtClasse1) avec a UNIQUE

35 Exemple de choix pour une relation 11

Soit deux entiteacutes homme et femme et une association mariage de cardinaliteacute 1111 entre ces deux entiteacutes (hommes et femmes sont donc obligatoirement marieacutes)Les entiteacutes homme et femme sont identifieacutees par un attribut nom (dans ce modegravele chaque personne a un nom unique on pourrait remplacer le nom par un identifiant comme le numeacutero de seacutecuriteacute social ou par une cleacute artificielle pour ecirctre plus proche de la reacutealiteacute)

Bien que de type 1111 le choix de la fusion nest pas tregraves opportun car il sagit bien dobjets distincts que lon veut modeacuteliser

On choisira donc plutocirct la repreacutesentation avec deux relationsLa cleacute eacutetrangegravere pourra ecirctre du cocircteacute homme ou femme mecircme si la pratique dominante nous incite agrave la mettre du cocircteacute femmeOn pourra eacutegalement deacutecider de prendre la cleacute eacutetrangegravere comme cleacute primaire

1 homme (nom)2 femme (mariage=gthomme nom) avec nom KEY3 Contrainte PROJ(hommenom) = PROJ(femmemariage)

Si lassociation avait eacuteteacute de cardinaliteacute 0101 (certains hommes et femmes ne sont pas marieacutes) un choix similaire se serait imposeacute avec limpossibiliteacute de choisir la cleacute eacutetrangegravere comme cleacute primaire celle-ci pouvant ecirctre nulle et neacutetant donc plus candidate

1 homme (nom)2 femme (nom mariage=gthomme) avec mariage UNIQUE

4 Autres eacuteleacutements utiles en UML packages et steacutereacuteotypesObjectifs

Maicirctriser le diagramme de classe UML dans le cas de la conception de BD

41 Paquetages

Les paquetages (plus communeacutement appeleacutes ) sont des eacuteleacutements servant agrave organiser un modegravelepackage

Ils sont particuliegraverement utiles degraves que le modegravele comporte de nombreuses classes et que celles-ci peuvent ecirctre trieacutees selon plusieurs aspects structurants

Exemple

Exemple

Deacutefinition Package

homme (nom)

femme (mariage=gthomme nom) avec nom KEY

Contrainte PROJ(hommenom) = PROJ(femmemariage)

homme (nom)

femme (nom mariage=gthomme) avec mariage UNIQUE

Steacutereacuteotype

22

Notation des paquetages en UML

Exemple dutilisation des packages

On repreacutesente chaque classe au sein dun Il est alors possible de faire une preacutesentation globale du packagemodegravele (tous les ) partielle (une partie des ) ou centreacutee sur un seul packages packages package

Pour une repreacutesentation partielle ou centreacutee sur un on repreacutesente les concerneacutes avec leurs package packagesclasses propres ainsi que toutes les classes lieacutees des autres packages (et seulement celles-ci)

Preacutesentation partielle du modegravele centreacutee sur un package

Syntaxe

Exemple

Meacutethode

Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt

23

42 Steacutereacuteotype

Un steacutereacuteotype UML est une syntaxe permettant dajouter de la seacutemantique agrave la modeacutelisation des classes Il permet de deacutefinir des afin de regrouper conceptuellement un ensemble de classes (agrave linstar types de classedune classe qui permet de regrouper conceptuellement un ensemble dobjets)

Cest une meacutecanique de meacuteta-modeacutelisation elle permet deacutetendre le meacuteta-modegravele UML cest agrave dire le modegravele conceptuel du modegravele conceptuel

Un meacuteta-modegravele est le modegravele dun modegravele Par exemple le meacuteta-modegravele UML comprend les concepts de classe attribut association cardinaliteacute composition agreacutegation contraintes annotations On mobilise ces concepts (on les instancie) pour exprimer un modegravele particulier suivant le formalisme UML

Les steacutereacuteotypes permettent donc dajouter au meacuteta-modegravele UML standard celui que tout le monde utilise des concepts locaux pour enrichir le langage de modeacutelisation que lon utilise pour reacutealiser des modegraveles

Notation dun steacutereacuteotype en UML

Un steacutereacuteotype speacutecifique enrichit le meacuteta-modegravele UML mais selon une seacutemantique qui est propre agrave celui qui la poseacute non standard donc La conseacutequence est que pour un tiers linterpreacutetation du steacutereacuteotype nest plus normaliseacutee et sera potentiellement plus facilement erroneacutee Il convient donc de ne pas abuser de cette meacutecanique

Deux ou trois steacutereacuteotypes speacutecifiques correctement deacutefinis sont faciles agrave transmettre plusieurs dizaines repreacutesenteraient un nouveau langage complet agrave apprendre pour le lecteur du modegravele

Il existe des steacutereacuteotypes fournit en standard par UML ou communeacutement utiliseacutes par les modeacutelisateurs Lavantage est quil seront compris plus largement au mecircme titre que le reste du meacuteta-modegravele (ils ont une valeur de standard)

43 Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt

Deacutefinition Steacutereacuteotype UML

Deacutefinition Meacuteta-modegravele

Syntaxe

Conseil Steacutereacuteotypes speacutecifiques et steacutereacuteotypes standard

Syntaxe

Type utilisateurs steacutereacuteotype ltltdataTypegtgt

24

Steacutereacuteotype UML permettant dexprimer une eacutenumeacuteration

Exemple de modeacutelisation UML deacutenumeacuteration

44 Type utilisateurs steacutereacuteotype ltltdataTypegtgt

Les types utilisateurs permettent de deacutefinir des types complexes propres en extension des types primaires (entier chaicircne date)

Steacutereacuteotype dataType

Steacutereacuteotype dataType (exemple)

Cette modeacutelisation est eacutequivalente agrave la modeacutelisation des attributs composeacutes directement dans la classe principale Cest une repreacutesentation plus standard en UML

Exemple

Syntaxe

Exemple

Meacutethode Attributs composeacutes

Synthegravese sur la modalisation UML et relationnelle

25

Quelques eacuteleacutements de stylistique UML

26

-

- -

-

-

-

- - -

- - - -

1

2

3

5 Synthegravese sur la modalisation UML et relationnelle51 Quelques eacuteleacutements de stylistique UML

Toutes les associations doivent ecirctre nommeacutees (sauf composition heacuteritage agreacutegation)Ne pas utiliser de nom geacuteneacuterique pour les Classes comme Entiteacute Classe Objet TrucEacuteviter les noms geacuteneacuteriques pour les associations (comme est associeacute agrave)Attention au sens des compositions et agreacutegation le losange est cocircteacute ensemble et noubliez pas les cardinaliteacutes notamment cocircteacute parties

Nutilisez pas le souligneacute ni les en UML pour identifier les cleacutes preacutefeacuterez la contrainte keyPreacutefeacuterez lheacuteritage aux booleacuteens de typage en UMLLes attributs deacuteriveacutes sont reacuteserveacutes aux deacuterivations simples (des attributs de la mecircme classe) si cest plus complexe preacutefeacuterez des meacutethodes (et dans le doute preacutecisez les modes de calcul sur le scheacutema ou dans une note agrave part)Donnez des exemples de contenu lorsque ce nest pas eacutevident (lorsque le couple nom dattribut et type ne permet pas de faccedilon eacutevidente de comprendre de quoi lon parle)Inutile de deacuteclarer le type booleacuteen en UML utilisez-le directement comme un type de donneacutees connu

Si tous vos heacuteritages sont exclusifs notez-le agrave part pour alleacuteger votre scheacutema (et eacuteviter labondance de XOR)

52 Attention aux cleacutes artificielles

en UML on ne pose jamais de cleacutes artificiellesen relationnel on pose rarement des cleacute artificielles sauf dans le cas de cleacutes eacutetrangegraveres vraiment trop compliqueacuteesen SQL on peut poser des cleacutes artificielles si on a une bonne raison (ce nest donc pas systeacutematique et cest agrave justifier)

On najoutera pas de cleacute artificielle en UML au moment de la modeacutelisation conceptuelle des donneacutees

Formellement en UML la notion de cleacute nexiste pas (contrairement agrave l ) elle est ajouteacutee par les E-A

pratiquants des BD

Logiquement on a pas besoin de cette notion en UML les cleacutes artificielles servent en relationnel et dans certains cas uniquementPratiquement cela peut conduire agrave des situations absurdes (comme enlever au niveau logique des cleacutes artificielles ajouteacutees au niveau conceptuel)

Attention

Conseil

Compleacutement

Fondamental

Cleacutes artificielles et niveau conceptuel

Bibliographie commenteacutee sur la modeacutelisation UML

27

-

-

- -

-

- -

-

-

3

4

5

si on fait du non-relationnel on ne doit pas ajouter de cleacutes artificielles dans certains cas (limbrication typiquement) cela arrive mecircme en relationnel avec la transformation de lheacuteritage (dans certains cas toujours)

Meacutethodologiquement il faut se concentrer agrave chaque phase sur ce qui est important donc au moment du MCD on traduit les besoins on repegravere les contraintes explicites (cleacute uniciteacute non nulliteacute) sans se preacuteoccuper de ce qui sera rendu neacutecessaire par la suite par la modeacutelisation relationnelle (les cleacutes eacutetrangegraveres par exemple) ou limpleacutementation (loptimisation par exemple) Agrave chaque jour suffit sa peine Peacutedagogiquement enfin les deacutebutants ont tendance (agrave cause des environnements de conception graphique comme phpMyAdmin notamment) agrave systeacutematiser les cleacutes artificielles en SQL (on pourrait en discuter) mais eacutegalement agrave ne pas faire le travail de recherche des cleacutes naturelles (au niveau relationnel notamment ce qui est une faute de modeacutelisation) Donc au plus tard on fait intervenir les cleacutes artificielles au plus on a une chance de penser aux cleacutes naturelles

Soit le modegravele relationnel suivant

1 Etu (id numEtu) avec numEtu cleacute 2 UV (id codeUv) avec codeUv cleacute3 Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

La question qui permet dafficher la liste des eacutetudiants (numEtu) avec leurs UVs (codeUv) neacutecessite une jointure des cleacutes artificielles Un modegravele sans ces cleacutes artificielles aurait eacuteteacute plus performant pour agrave causereacutepondre agrave cette question puisque toutes les informations se trouvent dans la relation Inscriptions

1 Etu (numEtu) 2 UV (codeUv) 3 Inscriptions (uv=gtUV etu=gtEtu)

Ne soyez pas systeacutematiqueIl est en effet freacutequent dans un projet reacuteel dadopter des cleacutes artificielles presque systeacutematiquement vous pourrez le faire en connaissance de cause quand vous aurez bien compris pourquoi cest inteacuteressant et quand ccedila ne lest pasLes cleacutes artificielles sont inteacuteressantes pour autre chose que les performances (leacutevolutiviteacute par exemple choisissez-les quand vous savez pourquoi)Les cleacutes artificielles ne dispensent pas de rechercher les cleacutes naturelles Les cleacutes artificielles ne sont pas la seule faccedilon doptimiser une base de donneacutees (indexation deacutenormalisation)

53 Bibliographie commenteacutee sur la modeacutelisation UML

Il existe de nombreux outils de modeacutelisation UML On pourra citer

logiciel Open Source et multi-plateformes facile dusage (qui marche neacuteanmoins mieux sur Linux Dia

que sur Windows)

(version gratuite)Objecteering

Cleacutes artificielles et optimisation est-il toujours plus performant dutiliser des cleacutes artificielles

Conseil

Compleacutement Outils de modeacutelisation UML

Etu (id numEtu) avec numEtu cleacute

UV (id codeUv) avec codeUv cleacute

Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

Etu (numEtu)

UV (codeUv)

Inscriptions (uv=gtUV etu=gtEtu)

Bibliographie commenteacutee sur la modeacutelisation UML

28

- - - - - -

- - - - - -

Agrave voir eacutegalement en Open Source ou (non testeacute par lauteur)ArgoUML EclipseUML

UML2 en action

Pour un aperccedilu plus deacutetailleacute des possibiliteacutes dexpression du diagramme de classe UML lire le chapitre 7 Deacuteveloppement du modegravele statique (pages 133 agrave 163)

On pourra notamment y trouver

Lassociation dagreacutegationLes proprieacuteteacutes dassociationLexpression de rocircles dans les associationsLes attributs de classeLes qualificatifsLes opeacuterations (ou meacutethodes)

Le chapitre donne de plus des conseils meacutethodologiques pour la conception (voir en particulier la synthegravese page 163)

On pourra eacutegalement y trouver

Des principes de choix de modeacutelisation entre attributs et classes et sur la segmentation des classesDes principes de seacutelection des attributs (redondance avec les associations avec les classes etc)Des principes de seacutelection des associationsDes principes de choix de cardinaliteacute (notamment pour la gestion dhistorisation)Des principes de seacutelection des relations de geacuteneacuteralisation (heacuteritage)Des principes dintroduction de meacutetaclasses (type)s

U M L e n Franccedilais

Une tregraves bonne reacutefeacuterence en ligne sur la modeacutelisation UML avec des cours des liens vers la norme etc

Le contenu deacutepasse tregraves largement lusage dUML pour la modeacutelisation de BD (et ne fait dailleurs pas de reacutefeacuterence preacutecise agrave ce sous-ensemble particulier)

On pourra consulter en particulier le chapitre sur les diagrammes de classe httpumlfreefrcoursi-p14html

UML en 5 eacutetapes

On consultera en particulier le tutoriel sur les diagrammes de classe httpdeveloppeurjournaldunetcomtutorielcpt010607cpt_umlintroshtml

Cinq petits conseils pour un scheacutema UML efficace

Compleacutement Modeacutelisation UML

Compleacutement Reacutefeacuterence UML en ligne

Compleacutement Tutoriel sur la modeacutelisation UML

Compleacutement Conseils

Synthegravese Les diagrammes de modeacutelisation conceptuelle

29

-

-

- -

-

- -

-

-

- -

-

- - - -

-

-

(chapitre 3)UML2 par la pratique

Des explications exemples et eacutetudes de cas

54 Synthegravese Les diagrammes de modeacutelisation conceptuelle

Un modegravele conceptuel peut ecirctre repreacutesenteacute sous forme de diagramme E-A ou sous forme de diagramme de classe UML

Classe ou Entiteacute

Attribut ou Proprieacuteteacute

TypeacuteMulti-valueacuteComposeacuteDeacuteriveacute

Meacutethode

ParamegravetresValeur de retour

Association

Association

VerbeCardinaliteacute

Heacuteritage

Heacuteritage dattributsHeacuteritage de meacutethodes

Composition (ou entiteacute faible)

Cardinaliteacute

Compleacutement Pratique

Exercices

30

-

-

-

-

-

-

-

1 2

1

1 Exercice Lab III[20 min]

Description du problegraveme

Un laboratoire souhaite geacuterer les meacutedicaments quil conccediloit

Un meacutedicament est deacutecrit par un nom qui permet de lidentifier En effet il nexiste pas deux meacutedicaments avec le mecircme nom Un meacutedicament comporte une description courte en franccedilais ainsi quune description longue en latin On gegravere aussi le conditionnement du meacutedicament cest agrave dire le nombre de pilules par boicircte (qui est un nombre entier)Agrave chaque meacutedicament on associe une liste deacutedieacutee de contre-indications geacuteneacuteralement plusieurs parfois aucune Les contre-indications sont trieacutees par ordre dimportance Lordre est total est strict pour un meacutedicament donc chaque contre-indication possegravede une importance et il nexiste pas deux contre-indications associeacutees au mecircme meacutedicament avec la mecircme importanceTout meacutedicament possegravede au moins un composant souvent plusieurs Un composant est identifieacute par un code unique et possegravede un intituleacute Tout composant peut intervenir dans la fabrication de plusieurs meacutedicaments Il existe des composants qui ne sont pas utiliseacutes pour fabriquer des meacutedicaments et que lon veut quand mecircme geacuterer

Donneacutees de test

Afin de mateacuterialiser notre base de donneacutees nous obtenons les descriptions suivantes

Le a pour description courte et pour description longue Chourix Meacutedicament contre la chute des chouxlaquo raquoVivamus fermentum semper porta Nunc diam velit adipiscing ut tristique vitae sagittis vel odio laquo

Il est conditionneacute en boicircte de 13Maecenas convallis ullamcorper ultricies Curabitur ornare raquoSes contre-indications sont

Le Chourix ne doit jamais ecirctre pris apregraves minuitLe Chourix ne doit jamais ecirctre mis au contact avec de leau

Ses composants sont le et le HG79 SN50Le a pour description courte et pour Tropas Meacutedicament contre les dysfonctionnements intellectuelslaquo raquodescription longue Suspendisse lectus leo consectetur in tempor sit amet placerat quis neque Etiam laquo

Il est conditionneacute en boicircte de 42luctus porttitor lorem sed suscipit est rutrum non raquoSes contre-indications sont

Le Tropas doit ecirctre gardeacute agrave labri de la lumiegravere du soleil

Son unique composant est le HG79Les composants existants sont

HG79 Vif-argent alleacutegeacute

ExercicesII

Exercice Eacutetudiants et UVs (introduction)

31

- - -

- - HG81 Vif-argent alourdi

SN50 Pur eacutetain

Question 1

Question 2

Question 3

2 Exercice Eacutetudiants et UVs (introduction)[20 min]

On dispose du scheacutema UML ci-apregraves qui deacutecrit des eacutetudiants des UV les notes obtenues par les eacutetudiants agrave ces UV et les diplocircmes dorigine de ces eacutetudiants

Eacutetudiants et UVs

key deacutesigne des cleacutes candidates ici toutes les cleacutes ne sont composeacutees que dun seul attributlocal key deacutesigne une cleacute localeun semestre est de la forme PYYYY ou AYYYY (ougrave YYYY deacutesigneacute une anneacutee sur 4 chiffre) exemple A2013 P2014

Rappel Notion de cleacute locale dans classes dassociation (cf p49)

Effectuez le modegravele conceptuel en UML de ce problegraveme

Indices

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans deacutedieacuteeles donneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition

[ ]solution ndeg4 [ ] p56

En mobilisant les regravegles adeacutequates proposer un modegravele logique de donneacutees correspondant en relationnel Le repeacuterage des domaines et des cleacutes est obligatoire

[ ]solution ndeg5 [ ] p57

Dessiner des tableaux remplis avec les donneacutees fournies en exemple afin de montrer que le modegravele fonctionne selon le besoin exprimeacute initialement On pourra mettre le premier mot seulement des descriptions pour gagner du temps

[ ]solution ndeg6 [ ] p57

Exercice Super-heacuteros relationnels I

32

-

-

Question

3 Exercice Super-heacuteros relationnels I[20 min]

La gamme de super-heacuteros GARVEL veut reacutealiser la base de donneacutees de leurs figurines articuleacutees La socieacuteteacute a fait reacutealiser un modegravele UML qui doit servir de point de deacutepart agrave la mise en œuvre

Modegravele UML Figurines GARVEL

Question

4 Exercice Objets Numeacuteriques Libres[30 min]

Lassociation ONL (Objets Numeacuteriques Libres) est une association de promotion des logiciels libres Elle souhaite exposer sur un site Internet une liste de logiciels libres Ce site sera adosseacute agrave une base de donneacutees relationnelle ou relationnel-objet La premiegravere eacutetape de sa deacutemarche est de reacutealiser un modegravele conceptuel repreacutesentant ce quelle souhaite faire

La base de donneacutees permet de geacuterer des applicationsLes applications sont identifieacutees par leur nom (LibreOffice Gimp) et leur version (10 21) et comportent une description courte et une URL Tous les attributs sont obligatoires Chaque application a une URL uniqueLa base de donneacutees permet de geacuterer des librairies

Traduire le scheacutema en modegravele logique relationnel ( )MLD1

On choisira obligatoirement les cleacutes primaires parmi celles neacutecessitant le plus petit nombre de bits possible pour leur codage

[ ]solution ndeg7 [ ] p57

Transformer le modegravele UML en modegravele relationnel (justifier les passages non triviaux en particulier la relation dheacuteritage)

[ ]solution ndeg8 [ ] p58

Exercice Objets Numeacuteriques Libres

33

-

-

-

-

-

-

-

-

-

-

-

-

Les librairies sont des logiciels mais pas des applications Elles ont les mecircmes attributs que les applications (nom version description courte URL) mais les URL ne sont pas neacutecessairement uniques Les applications peuvent deacutependre de librairies ou dautres applications et les librairies peuvent deacutependre dautres librairies (mais pas dune application)La base de donneacutees permet de geacuterer des composantsLes composants sont inteacutegreacutes agrave une application ou librairie Les composants ont un code interne agrave lapplication ou la librairie quil servent une version et une description courte et une URL Le code et le numeacutero de version permettent didentifier localement le composant au sein de la librairie ou de lapplication la description courte et lURL sont optionnellesLa base de donneacutees permet de geacuterer des licencesLes applications librairies et composants sont attacheacutes agrave une ou plusieurs licences identifieacutees par leur nom (GPL MPL) leur version et leur langue et comportant le texte inteacutegral de la licence Les versions des logiciels et licences sont de type numeacutero de licence majeur point numeacutero de licence mineur comme 10 ou 22La base de donneacutees permet de geacuterer des cateacutegoriesChaque logiciel est rangeacute dans une cateacutegorie principale et plusieurs cateacutegories secondaires Exemple de cateacutegories bureautique dessin multimeacutedia physique

Exemple (factice) de donneacutees

Applications

Scenari 41 une chaicircne eacuteditoriale XML httpscenariorg deacutepend de Libreoffice 43 et de ImageMagick 68Libreoffice 43 une suite bureautique WYSIWYG httplibreofficeorg

Librairie

ImageMagick 68 permet de creacuteer de convertir de modifier et dafficher des images http imagemagickorg

Composant

impng 02 est un composant de ImageMagick 68 permet de compresser une image au format PNG

Toutes ces applications librairies et composants sont disponibles sous une licence LGPL 30 et GPL 30 franccedilaisesToutes ces applications et librairies sont rangeacutees dans la cateacutegorie principale document Scenari est rangeacute dans la cateacutegorie secondaire Eacutedition WYSIWYM Libreoffice dans la cateacutegorie secondaire Bureautique ImageMagick dans la cateacutegorie secondaire Multimeacutedia

Question

Reacutealiser un MCD en UML[ ]solution ndeg9 [ ] p58

Devoirs

34

1 Exercice Arbre de scegravene 3D[30 minutes]

On souhaite pouvoir geacuterer les diffeacuterents eacuteleacutements composant des scegravenes 3D dans une base de donneacutees Une scegravene contient des objets qui eux-mecircmes peuvent appartenir agrave plusieurs scegravenes (au moins une) mais il ne peut y avoir plusieurs fois le mecircme objet dans une mecircme scegravene Dans chaque scegravene les objets peuvent ecirctre visibles ou invisibles Les scegravenes et les objets sont identifieacutes de maniegravere unique par un nom Une scegravene peut ecirctre active ou inactive Un objet a comme proprieacuteteacute une position dans lespace repreacutesenteacutee par un vecteur de reacuteels agrave trois composantes (x y z) Les objets sont organiseacutes de maniegravere hieacuterarchique un objet peut ecirctre parent de plusieurs objets et chaque objet peut avoir au plus un parent Des scripts peuvent ecirctre associeacutes agrave un objet ou agrave une scegravene (agrave lun ou agrave lautre mais pas aux deux) Un script est identifieacute de maniegravere unique par un nom et possegravede eacutegalement un attribut permettant de connaicirctre son eacutetat (actif ou inactif) Un personnage est un objet particulier qui possegravede des animations Une animation est relative agrave un personnage et est identifieacutee de maniegravere locale par un nom Agrave un objet est associeacute un maillage et celui-ci peut ecirctre utiliseacute par plusieurs objets Un maillage est identifieacute de maniegravere unique par un nom et est composeacute de plusieurs eacuteleacutements Chaque eacuteleacutement est relatif agrave un maillage et est identifieacute de maniegravere locale par un numeacutero Il existe exactement trois types deacuteleacutement des nœuds des arrecirctes et des faces Une face est deacutelimiteacutee par trois arrecirctes et chaque arrecircte est deacutelimiteacutee par deux nœuds Plusieurs arrecirctes peuvent partager un mecircme nœud et plusieurs faces peuvent partager une mecircme arrecircte Afin deacutevaluer la complexiteacute dune scegravene on souhaite pouvoir calculer le nombre de faces afficheacutees pour une scegravene donneacutee (cest-agrave-dire la somme du nombre de faces du maillage associeacute aux objets visibles de la scegravene) Un maillage possegravede plusieurs mateacuteriaux identifieacutes de maniegravere unique par un nom Un mateacuteriau peut ecirctre associeacute agrave plusieurs maillages Un mateacuteriau est caracteacuteriseacute par une couleur deacutefinie par un vecteur dentiers agrave quatre composantes rouge vert bleu alpha Un mateacuteriau peut posseacuteder une texture et celle-ci peut ecirctre utiliseacutee par plusieurs mateacuteriaux Une texture est identifieacutee de maniegravere unique par un nom et possegravede comme attribut une image

Question 1

Question 2

DevoirsIII

Proposez une clarification de ce problegraveme On pourra reclasser les informations par grande cateacutegorie scegravene objets scripts

Eacutetablissez un modegravele conceptuel en UML de ce problegraveme

Compleacutement Exercices de modeacutelisation suppleacutementaire

35

1 Exercice Appartements agrave louer[30 min]

Une agence dimmobilier (ventes et locations) veut geacuterer son parc dappartements dans une base de donneacutees Chaque appartement possegravede plusieurs piegraveces qui peuvent ecirctre des piegraveces dhabitation des piegraveces de rangement ou des commoditeacutes

Chaque piegravece a une superficie un nombre de prises eacutelectriques et des meubles Pour ces derniers on veut enregistrer le nom du modegravele et le type (chaise lit four etc) Rien nempecircche quune piegravece comporte plusieurs meubles identiques (par exemple plusieurs chaises PIN IQUEA) Les piegraveces dhabitation ont une ou plusieurs fenecirctres les piegraveces de rangement ont une ou plusieurs eacutetagegraveres et une surface de rangement utile totale On veut aussi savoir dans quelles piegraveces de rangement se situent les tableaux eacutelectriques de lappartement Finalement les piegraveces commoditeacutes peuvent ecirctre de trois types cuisine toilette ou salle de bain

Lagence veut aussi enregistrer les portes entre les diffeacuterentes piegraveces Une porte peut ecirctre agrave simple battant double battant coulissante ou une simple ouverture

Chaque appartement a une adresse une superficie totale (qui est la somme des superficies des piegraveces) et un type qui est la lettre T suivie du nombre de piegraveces dhabitation de lappartement Pour un appartement donneacute chaque piegravece est identifieacutee par un numeacutero (commenccedilant au numeacutero 1)

Lagence veut eacutegalement enregistrer le quartier ougrave se trouve lappartement auquel est lieacute un prix par megravetre carreacute Finalement elle veut garder un historique de lhistoire de lappartement les peacuteriodes pour lesquelles il est libre occupeacute en travaux ou vendu

Question

2 Exercice Objectifs[40 min]

Vous prenez la preacutesidence de lassociation Objectifs dont lobjet est daider ses eacutetudiants membres agrave mener des projets dans le cadre de leurs eacutetudes

Compleacutement Exercices de modeacutelisation suppleacutementaire

IV

Reacutealisez le diagramme UML reacutepondant aux besoins de cette agence[ ]solution ndeg10 [ ] p59

Exercice Objectifs

36

- - -

-

-

- - -

Vous constatez en arrivant dans lassociation que personne ne sait exactement quels sont les projets en cours ni qui fait quoi dans les projets Vous ne parvenez pas non plus agrave obtenir une liste exacte des partenaires sur lesquels lassociation peut compter La seule chose sur laquelle vous parvenez agrave mettre la main est un fichier tableur vaguement agrave jour

Vous deacutecidez quil est plus que temps de mettre en place une base de donneacutees afin dassurer la bonne gestion des informations les plus importantes pour lassociation Vous vous attachez pour cela agrave reacutealiser une analyse des besoins

Analysez les documents ci-apregraves

Etat des projets

Eacutetat des projets de lassociation Objectifs

Recueil de besoins

Agrave partir de leacutetude du fonctionnement actuel de lassociation vous relevez les choses importantes agrave geacuterer suivantes

Les membres de lassociation geacuteneacuteralement identifieacutes par leur preacutenomLes projets geacutereacutes par lassociation avec des dates de deacutebut et de fin preacutecises et un chef de projetLe deacutetail des tacircches de chaque projet avec leurs dates de deacutebut et de fin aussi et la liste de tous les membres qui y participentLa liste des partenaires des projets avec leur rocircle preacutecis pour chacun des projets auxquels ils participent

Afin de mieux geacuterer les attributions des projets il serait eacutegalement inteacuteressant de creacuteer une liste des speacutecialiteacutes correspondant agrave ce qui ce fait dans lassociation et daffecter une speacutecialiteacute agrave chaque membre ainsi quune agrave chaque projet pour voir si ce sont bien les membres les mieux adapteacutes qui travaille sur les projets

Recueil de donneacutees

Les discussions avec les anciens membres de lassociation vous apprennent les choses suivantes

Lassociation a termineacute de geacuterer les trois projets Comeacutedie Musicale geacutereacutee par Nathalie sur les trois premiers mois du semestre dautomne 1001 Science en fecircte geacutereacutee par Pierre sur tout le semestre de printemps 1003 et Nuit du picolo geacutereacutee par Julien en novembre 1001Les speacutecialiteacutes recenseacutees pour le moment sont Ville Universiteacute Sport Entreprise Culture InternationalIl faut au moins dix membres agrave lassociation (sinon elle ferme) recruter ceux qui manquentAidez lassociation agrave diviser ses projets en tacircches

Exercice Objectifs

37

- Les partenaires suivants aident ou ont aideacute lassociation la mairie pour la comeacutedie musicale et la science en fecircte qui apporte un soutien financier le ministegravere de la culture qui apporte son soutien logistique agrave la science en fecircte lassociation des commerccedilants de la ville qui apporte son soutien publicitaire agrave la comeacutedie musicale 1664 qui offre ses biegraveres agrave moitieacute prix pour la nuit du Picolo

Question 1

Question 2

Question 3

Afin de preacuteparer une analyse des besoins sommaire listez les donneacutees que vous devrez geacuterer agrave laide des documents et recueils de discussion agrave votre disposition Faites des hypothegraveses lorsque les donneacutees sont incomplegravetes ou incoheacuterentes

[ ]solution ndeg11 [ ] p59

Reacutealiser le MCD en UML et en E-A agrave partir des donneacutees preacutepareacutees dans la question preacuteceacutedente[ ]solution ndeg12 [ ] p60

Reacutealiser le MLD en relationnel en traduisant votre MCD[ ]solution ndeg13 [ ] p61

Contenus annexes

38Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

- - -

gt Attributs

Un attribut est une information eacuteleacutementaire qui caracteacuterise une classe et dont la valeur deacutepend de lobjet instancieacute

Le domaine des valeurs que peut prendre lattribut est fixeacute a prioriUn attribut est typeacute

Il peut prendre plusieurs valeurs distinctes dans son domaineUn attribut peut ecirctre multivalueacute Sa valeur alors est une fonction sur dautres attributs de la classeUn attribut peut ecirctre deacuteriveacute

(ou composite) Il joue alors le rocircle dun groupe dattributs (par Un attribut peut ecirctre composeacuteexemple une adresse peut ecirctre un attribut composeacute des attributs numeacutero type de voie nom de la voie) Cette notion renvoie agrave la notion de variable de type dans les langages de Record

programmation classiques

En UML on preacutefegravere lusage de meacutethodes aux attributs deacuteriveacutes On utilisera toujours des meacutethodes degraves que la valeur de lattribut deacuteriveacute deacutepend dautres attributs exteacuterieurs agrave sa classeEn UML on preacutefegravere lusage de compositions aux attributs composeacutes On utilisera toujours des compositions pour les attributs composeacutes et multivalueacutes

1 attributtype2 attribut_multivalueacute[nbMinValeursnbMaxValeurs]type3 attribut_deacuteriveacutetype4 attribut_composeacute5   - sous-attribut1type6   - sous-attribut2type7   -

Contenus annexes

Deacutefinition Attribut

Attention On utilise peu les attributs deacuteriveacutes et composeacutes en UML

Syntaxe

attributtype

attribut_multivalueacute[nbMinValeursnbMaxValeurs]type

attribut_deacuteriveacutetype

attribut_composeacute

  - sous-attribut1type

  - sous-attribut2type

  -

Contenus annexes

39Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Repreacutesentation dattributs en UML

Dans cet exemple les attributs Nom Preacutenom sont de type lun de 20 caractegraveres et lautre de 10 stringtandis que DateNaissance est de type et Age de type Preacutenom est un attribut multivalueacute ici date integerune personne peut avoir de 1 agrave 3 preacutenoms Age est un attribut deacuteriveacute il est calculeacute par une fonction sur DateNaissance

Meacutethodes (cf p39)

Composition (cf p5)

gt Meacutethodes

Une meacutethode (ou opeacuteration) est une fonction associeacutee agrave une classe dobjet qui permet dagir sur les objets de la classe ou qui permet agrave ces objets de renvoyer des valeurs (calculeacutees en fonction de paramegravetres)

1 methode(paramegravetres)type

Pour la modeacutelisation des bases de donneacutees les meacutethodes sont surtout utiliseacutees pour repreacutesenter des donneacutees calculeacutees (agrave linstar des attributs deacuteriveacutees) ou pour mettre en exergue des fonctions importantes du systegraveme cible Seules les meacutethodes les plus importantes sont repreacutesenteacutees lapproche est moins systeacutematique quen modeacutelisation objet par exemple

Lors de la transformation du modegravele conceptuel UML en modegravele logique relationnel les meacutethodes ne Leur repeacuterage au niveau conceptuel sert donc surtout daide-seront geacuteneacuteralement pas impleacutementeacutees

meacutemoire pour limpleacutementation au niveau applicatif

Exemple La classe Personne

Compleacutement Voir aussi

Deacutefinition Meacutethode

Syntaxe

Remarque Meacutethodes et modeacutelisation de BD

Remarque Meacutethodes relationnel relationnel-objet

methode(paramegravetres)type

Contenus annexes

40Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Au contraire un modegravele logique relationnel-objet permettra limpleacutementation de meacutethodes directement associeacutees agrave des tables Leur repeacuterage au niveau conceptuel est donc encore plus important

Transformation des meacutethodes par des vues (cf p40)

gt Transformation des meacutethodes par des vues

Lorsquune meacutethode est speacutecifieacutee sur un diagramme UML pour une classe C si cette meacutethode est une fonction relationnelle (elle renvoie une unique valeur et elle peut ecirctre reacutesolue par une requecircte SQL) alors on creacutee une vue qui reprend les attributs de la classe C et ajoute des colonnes calculeacutees pour les meacutethodes

Les attributs deacuteriveacutes eacutetant apparenteacutes agrave des meacutethodes ils peuvent eacutegalement ecirctre geacutereacutes par des vues

gt Classe dassociation

On utilise la notation des classes dassociation lorsque lon souhaite ajouter des proprieacuteteacutes agrave une association

Notation dune classe dassociation en UML

On reacuteserve en geacuteneacuteral les classes dassociation aux associations NM

Il est toujours possible de reacuteduire une classe dassociation sur une association 1N en migrant ses attributs sur la classe cocircteacute N et cest en geacuteneacuteral plus lisible ainsi

Compleacutement

Meacutethode

Remarque Attributs deacuteriveacutes

Deacutefinition Classe dassociation

Syntaxe Notation dune classe dassociation en UML

Meacutethode

Contenus annexes

41Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

-

Emplois

Selon le standard UML une classe dassociation est une classe et agrave ce titre elle peut ecirctre mobiliseacutee dans dautres associations ou dans des heacuteritages Nous deacuteconseillons neacuteanmoins ces notations qui ont tendance agrave complexifier la lecture et la transformation du diagramme

Nous conseillons donc de ne jamais associer une classe dassociation

gt Transformation des attributs

Pour chaque attribut eacuteleacutementaire et monovalueacute dune classe

on creacutee un attribut correspondant

Attribut

Classe1(ab)

Pour chaque attribut composite comprenant N sous-attributs dune classe

on creacutee N attributs correspondantsdont les noms sont la concateacutenation du nom de lattribut composite avec celui du sous-attribut

Exemple Exemple de classe dassociation

Conseil

Meacutethode Attributs simples

Meacutethode Attributs composites

Contenus annexes

42Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- - - -

Attribut composeacute

Classe1(ab_b1b_b2)

Pour chaque attribut multivalueacute b dune classe C

on creacutee une nouvelle relation RBqui comprend un attribut monovalueacute correspondant agrave bplus la cleacute de la relation repreacutesentant C la cleacute de RB est la concateacutenation des deux attributs

Attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Dans le cas ougrave le nombre maximum de est fini et petit on peut eacutegalement adopter la transformation b

suivante Classe1(ab1b2b3b4b5b6b7b8b9b10)

Si le nombre dattributs est infini ( ) cest impossible sil est trop grand ce nest pas souhaitableb[1]

On combine les regravegles eacutenonceacutees pour les attributs composeacutes et pour les attributs multivalueacutes

Attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Transformation des compositions (cf p42)

Meacutethode Attributs multivalueacutes

Meacutethode Attributs multivalueacutes (meacutethode alternative)

Meacutethode Attributs composeacutes multivalueacutes

Rappel Voir aussi

Contenus annexes

43Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

gt Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Compleacutement Attributs multivalueacutes et composeacutes

Contenus annexes

44Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

Rappel Voir aussi

Rappel

Meacutethode

Contenus annexes

45Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p48)

gt Transformation des associations 1N

Pour chaque association binaire de type 1N

on ajoute agrave la relation cocircteacute N une cleacute eacutetrangegravere vers la relation cocircteacute 1

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Meacutethode

Contenus annexes

46Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Association 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Contrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p46)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

R1

Compleacutement

Rappel

Meacutethode

Contenus annexes

47Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p47)

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Deacutefinition Projection

Contenus annexes

48Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Deacutefinition Projection

Contenus annexes

49Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Transformation des classes dassociation

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de lassociation NM

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Meacutethode Classe dassociation NM

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

4 Exercice Objets Numeacuteriques Libres 32

III - Devoirs 34

1 Exercice Arbre de scegravene 3D 34

IV - Compleacutement Exercices de modeacutelisation suppleacutementaire 35

1 Exercice Appartements agrave louer 35

2 Exercice Objectifs 35

Contenus annexes 38

Questions de synthegravese 51

Solutions des exercices 53

Glossaire 63

Abreacuteviations 64

Bibliographie 65

Webographie 66

4Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Preacuterequis

Savoir faire un MCD UML avec des classes des associations simples de lheacuteritageSavoir faire un MLD relationnel agrave parti dun MCD UML avec des classes des associations simples de lheacuteritage

Objectifs

Cours

5

-

-

1 Modeacutelisation avanceacutee des associations en UMLObjectifs

Maicirctriser le diagramme de classe UML dans le cas de la conception de BD

11 Exercice Entreprise

12 Composition

On appelle composition une association particuliegravere qui possegravede les proprieacuteteacutes suivantes

La composition associe une classe composite et des classes parties tel que tout objet partie appartient agrave un et un seul objet composite Cest donc une association 1N (voire 11)La composition nest pas partageable donc un objet partie ne peut appartenir quagrave un seul objet composite agrave la fois

CoursI

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

[ ]solution ndeg1 [ ] p53

Deacutefinition Association de composition

Composition

6

- -

-

- -

- Le cycle de vie des objets parties est lieacute agrave celui de lobjet composite donc un objet partie disparaicirct quand lobjet composite auquel il est associeacute disparaicirct

La composition est une association particuliegravere (binaire de cardinaliteacute contrainte)La composition nest pas symeacutetrique une classe joue le rocircle de conteneur pour les classes lieacutees elle prend donc un rocircle particulier a prioriLa composition est une agreacutegation avec des contraintes suppleacutementaires (non partageabiliteacute et cycle de vie lieacute)

Notation de la composition en UML

La cardinaliteacute cocircteacute composite est toujours de exactement 1

Cocircteacute partie la cardinaliteacute est libre elle peut ecirctre 01 1 ou bien 1

Un livre

On voit bien ici quun chapitre na de sens que faisant partie dun livre quil ne peut exister dans deux livres diffeacuterents et que si le livre nexiste plus les chapitres le composant non plus

La composition permet dexprimer une association analogue agrave celle qui relie une entiteacute faible agrave une entiteacute

identifiante en modeacutelisation Lentiteacute de type faible correspond agrave un objet partie et lentiteacute identifiante agrave E-A

un objet composite

Une composition avec une classe partie doteacutee dun seul attribut peut seacutecrire avec un attribut multivalueacuteUn attribut composeacute et multivalueacute peut seacutecrire avec une composition

Remarque

Syntaxe Notation dune composition en UML

Attention Composition et cardinaliteacute

Exemple Exemple de composition

Remarque Composition et entiteacutes faibles

Conseil Composition et attribut multivalueacute

Agreacutegation

7

- - Attributs (cf p38)

Agreacutegation (cf p7)

13 Agreacutegation

Lagreacutegation est une association particuliegravere utiliseacutee pour preacuteciser une relation toutpartie (ou ensembleeacuteleacutement) on parle dassociation meacutereacuteologique

Notation de lagreacutegation en UML

La cardinaliteacute peut ecirctre exprimeacutee librement en particulier les instances de la classe Eacuteleacutement peuvent ecirctre associeacutees agrave plusieurs instances de la classe Ensemble et mecircme de plusieurs classes

Lagreacutegation garde toutes les proprieacuteteacutes dune association classique (cardinaliteacute cycle de vie etc) elle ajoute simplement une terminologie un plus preacutecise via la notion de toutpartie

14 Explicitation des associations (sens de lecture et rocircle)

Il est possible dajouter le sens de lecture du verbe caracteacuterisant lassociation sur un diagramme de classe UML afin den faciliter la lecture On ajoute pour cela un signe ou (ou un triangle noir) agrave cocircteacute du nom de lt gt

lassociation

Il est possible de preacuteciser le rocircle joueacute par une ou plusieurs des classes composant une association afin den faciliter la compreacutehension On ajoute pour cela ce rocircle agrave cocircteacute de la classe concerneacutee (parfois dans un petit encadreacute colleacute au trait de lassociation

Rocircle et sens de lecture sur une association

Rappel Voir aussi

Deacutefinition Association dagreacutegation

Syntaxe

Attention

Syntaxe Sens de lecture

Syntaxe Rocircle

Exemple

Notion de cleacute locale dans les compositions et les associations NM

8

- - -

15 Associations reacuteflexives

Une association reacuteflexive est une association qui associe une classe avec elle-mecircme

Association reacuteflexive laquo ami raquo

Lexplicitation des associations est souvent utile dans le cas des associations reacuteflexives non symeacutetrique (ou chaque objet ne joue pas le mecircme rocircle)

Une instance peut ecirctre associeacutee avec elle-mecircme dans le cas de dune association reacuteflexive

Si lon souhaite exprimer le contraire (une instance peut ecirctre associeacutee avec dautres instances de la mecircme classe mais pas avec elle-mecircme)

on ajoute une contrainte en UML (par exemple les personnes ne se marient pas avec elles-mecircmes) que lon traduira en relationnel par une contrainte du type AVEC pk fk

que lon traduira en SQL par une clause du type CHECK pk = fk

16 Notion de cleacute locale dans les compositions et les associations NM

Le concept de cleacute locale appartient au niveau conceptuel il est heacuteriteacute de lentiteacute faible du modegravele conceptuel Entiteacute-Association (eacutequivalent de la composition en UML) Dans une entiteacute faible ou une composition une cleacute de la classe composant est dite locale car elle ne permet didentifier lobjet que si lon connaicirct la classe composite

Dans certaines constructions en UML (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Deacutefinition Association reacuteflexive

Exemple

Meacutethode

Attention Auto-association dans les associations reacuteflexives

Deacutefinition

Attention

Classe dassociation avec cleacute locale

9

Dans une associations NM on peut avoir des (vraies) cleacutes ou des cleacutes locales En revanche dans une composition on na que des cleacutes locales en effet si le composant est identifiable indeacutependamment de son composite cest en geacuteneacuteral quil a une vie propre et donc que lon est pas en preacutesence dune composition

17 Classe dassociation avec cleacute locale

Classe dassociation (cf p40)

Dans lexemple suivant chaque personne peut avoir un emploi dans plusieurs socieacuteteacutes mais elle ne peut pas avoir plusieurs emplois dans une mecircme socieacuteteacute

Emplois

La transformation en relationnelle est coheacuterente avec cette contrainte

1 Socieacuteteacute()2 Personne()3 Emploi(personne=gtPersonne societe=gtSociete postestring salaireinteger quotitenumeric(12))

La speacutecification dune cleacute locale dans emploi par exemple ici le poste permet de lever cette contrainte lorsquon le souhaite en permettant didentifier chaque instance de lassociation ici lemploi dune personne par sa socieacuteteacute

Attention

Rappel

Contrainte inheacuterente agrave la relation NM

Meacutethode Inteacuterecirct de la cleacute locale

Socieacuteteacute()

Personne()

Emploi(personne=gtPersonne societe=gtSociete postestring salaireinteger

quotitenumeric(12))

Associations ternaires

10

La transformation en relationnelle permettra de maintenir la modeacutelisation en ajoutant la cleacute locale agrave la cleacute initiale

1 Socieacuteteacute()2 Personne()3 Emploi(personne=gtPersonne societe=gtSociete postestring salaireinteger quotitenumeric(72))

18 Associations ternaires

Notation dune association ternaire

Il est toujours possible de reacuteeacutecrire une association ternaire avec trois associations binaires en transformant lassociation en classe

Syntaxe

Conseil Ne pas abuser des associations ternaires

Socieacuteteacute()

Personne()

Emploi(personne=gtPersonne societe=gtSociete postestring salaireinteger

quotitenumeric(72))

Passage UML-Relationnel Associations avanceacutees

11

En pratique on nutilise jamais en UML dassociation de degreacute supeacuterieur agrave 3

2 Passage UML-Relationnel Associations avanceacuteesObjectifs

Savoir faire le passage dun scheacutema conceptuel UML agrave un scheacutema relationnel dans tous les cas

Reconnaicirctre les cas de transformation qui se traitent toujours de la mecircme faccedilon et ceux qui neacutecessite une modeacutelisation compleacutementaire

21 Trousseau de cleacutes

En UML et en relationnel il existe plusieurs termes mobilisant le mot laquo cleacute raquo le seul concept qui est commun est le concept de Tous les autres sont speacutecifiques au niveau conceptuel ou relationnelcleacute

Cleacute (key)

Cleacute locale (local key)

Cleacute (key)

Cleacute candidate (candidate key)

Cleacute primaire (primary key) et Cleacute alternative (alternate key)

Cleacute artificielle (surrogate key) et Cleacute naturelle (natural key business key)

Cleacute eacutetrangegravere (foreign key)

Conseil Pas de degreacute supeacuterieur agrave 3

Attention

Rappel Concept commun au niveau UML et relationnel

Rappel Concept speacutecifique au niveau UML

Rappel Concepts speacutecifiques au niveau relationnel

Transformation des compositions

12

- -

Deacutefinition des cleacutes en relationnel

22 Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Transformation des agreacutegations

13

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

23 Transformation des agreacutegations

Les associations de type agreacutegation se traitent de la mecircme faccedilon que les associations classiques

Agreacutegation 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Compleacutement Attributs multivalueacutes et composeacutes

Rappel Voir aussi

Rappel Agreacutegation

Transformation des classes dassociation avec cleacute locale

14

- -

Agreacutegation NM

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2)

24 Transformation des classes dassociation avec cleacute locale

Les attributs de la classe dassociation

sont ajouteacutes agrave la relation issue de lassociation NM la cleacute locale de la classe dassociation est concateacuteneacutee aux cleacutes eacutetrangegraveres composant deacutejagrave la cleacute primaire de la relation dassociation

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Meacutethode Classe dassociation NM

Exercice

15

25 Correspondance entre UML et relationnel

Passsage UML vers Relationnel

Exercice

16

26 ExerciceQuel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

[ ]solution ndeg2 [ ] p53

Exercice

17

27 ExerciceSoit le scheacutema UML suivant

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

[ ]solution ndeg3 [ ] p54

Modeacutelisation avanceacutee des associations 11 en relationnel

18

-

- -

-

-

3 Modeacutelisation avanceacutee des associations 11 en relationnelObjectifs

Savoir faire le passage dun scheacutema conceptuel UML agrave un scheacutema relationnel

Connaicirctre les choix possibles pour le cas de lassociation 11 et savoir faire le meilleur choix

Il existe des formulations conceptuelles en UML qui sont plus deacutelicates agrave traduire au niveau logique en relationnel comme lassociation 11 Ces cas requiegraverent un choix eacuteclaireacute de la part du concepteur

31 Transformation des associations 11 (approche geacuteneacuterale)

Il existe deux solutions pour transformer une association 11

Avec deux relations on traite lassociation 11 comme une association 1N puis lon ajoute une contrainte UNIQUE sur la cleacute eacutetrangegravere pour limiter la cardinaliteacute maximale agrave 1 Avec une seule relation on fusionne les deux classes en une seule relation

Association 11

Une des deux relations est choisie pour porter la cleacute eacutetrangegravere on ajoute les contraintes ou (cleacute candidate) sur la cleacute eacutetrangegravere et si neacutecessaire une UNIQUE KEY

contrainte imposant linstanciation simultaneacutee des deux relations

Classe1(abc=gtClasse2) avec c UNIQUE ou KEY

Classe2(cd)

ou

Classe1(ab)

Classe2(cda=gtClasse1) avec a UNIQUE ou KEY

On creacuteeacute une seule relation contenant lensemble des attributs des deux classes

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Meacutethode Avec deux relations (cleacute eacutetrangegravere)

Meacutethode Avec une relation (fusion)

Transformation des associations 1111

19

- -

- - - - - -

- on choisit une cleacute parmi les cleacutes candidates

Classe12(abcd) avec c UNIQUE ou KEY

ou

Classe21(cdab) avec a UNIQUE ou KEY

Ce choix entre les deux meacutethodes sera conduit par une appreacuteciation du rapport entre

La complexiteacute introduite par le fait davoir deux relations lagrave ou une suffitLa pertinence de la seacuteparation des deux relations dun point de vue seacutemantiqueLes pertes de performance dues agrave leacuteclatement des relationsLes pertes de performance dues au fait davoir une grande relationLes questions de seacutecuriteacute et de sucircreteacute factoriseacutees ou non au niveau des deux relations

Dans le cas dune association 1111 il faudra ajouter une contrainte compleacutementaire

Transformation des associations 1111 (cf p19)

32 Transformation des associations 1111

Le plus souvent cest meacutethode par des relations qui est la plus adapteacutee agrave ce casfusionLorsquelle ne lest pas et que lon choisit deux relations il faut ajouter une contrainte dynamique qui controcirclera que les deux relations sont bien toujours instancieacutees ensembles Notons que la cleacute eacutetrangegravere peut ecirctre choisie comme cleacute primaire

Association 11

Classe12(abcd) avec c KEY

ou

Classe21(cdab) avec a KEY

ou

Classe1(abc=gtClasse2) avec c KEY

Classe2(cd)

Contrainte PROJECTION(Classe1c) = PROJECTION(Classe2c)

ou

Classe1(ab)

Remarque Fusion des relations dans le cas de la traduction de lassociation 11

Compleacutement

Meacutethode Association 1111

Transformation des associations 0111

20

-

-

-

-

Classe2(cda=gtClasse1) avec a KEY

Contrainte PROJECTION(Classe1a) = PROJECTION(Classe2a)

La contrainte dynamique exprimeacutee ici suit le mecircme principe que pour les association 1NContrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p44)

33 Transformation des associations 0111

Le plus souvent cest la meacutethode par les deux relations qui est la plus adapteacutee on choisira toujours la relation cocircteacute 01 pour ecirctre reacutefeacuterenccedilante

Il est possible dutiliser la fusion dans ce cas les cleacutes cocircteacute 01 deviennent des attributs il ne UNIQUE

peuvent plus ecirctre cleacutes pouvant ecirctre NULL

Association 011

Classe1(abc=gtClasse2) avec c KEY

Classe2(cd)

ou

Classe12(cdab) avec a UNIQUE

34 Transformation des associations 0101

On choisit la solution avec deux relations dun cocircteacute ou de lautre la cleacute eacutetrangegravere est associeacute agrave la contrainte ce nest pas une cleacute car elle peut ecirctre nulleUNIQUE

Il nest pas souhaitable de choisir la fusion lune des deux relations pouvant ecirctre nulle on ne pourrait plus trouver de cleacute naturelle

Association 0101

Classe1(abc=gtClasse2) avec c UNIQUE

Classe2(cd)

ou

Compleacutement Contrainte dynamique

Meacutethode Association 0111

Meacutethode Association 0101

Exemple de choix pour une relation 11

21

-

- -

-

-

Classe1(ab)

Classe2(cda=gtClasse1) avec a UNIQUE

35 Exemple de choix pour une relation 11

Soit deux entiteacutes homme et femme et une association mariage de cardinaliteacute 1111 entre ces deux entiteacutes (hommes et femmes sont donc obligatoirement marieacutes)Les entiteacutes homme et femme sont identifieacutees par un attribut nom (dans ce modegravele chaque personne a un nom unique on pourrait remplacer le nom par un identifiant comme le numeacutero de seacutecuriteacute social ou par une cleacute artificielle pour ecirctre plus proche de la reacutealiteacute)

Bien que de type 1111 le choix de la fusion nest pas tregraves opportun car il sagit bien dobjets distincts que lon veut modeacuteliser

On choisira donc plutocirct la repreacutesentation avec deux relationsLa cleacute eacutetrangegravere pourra ecirctre du cocircteacute homme ou femme mecircme si la pratique dominante nous incite agrave la mettre du cocircteacute femmeOn pourra eacutegalement deacutecider de prendre la cleacute eacutetrangegravere comme cleacute primaire

1 homme (nom)2 femme (mariage=gthomme nom) avec nom KEY3 Contrainte PROJ(hommenom) = PROJ(femmemariage)

Si lassociation avait eacuteteacute de cardinaliteacute 0101 (certains hommes et femmes ne sont pas marieacutes) un choix similaire se serait imposeacute avec limpossibiliteacute de choisir la cleacute eacutetrangegravere comme cleacute primaire celle-ci pouvant ecirctre nulle et neacutetant donc plus candidate

1 homme (nom)2 femme (nom mariage=gthomme) avec mariage UNIQUE

4 Autres eacuteleacutements utiles en UML packages et steacutereacuteotypesObjectifs

Maicirctriser le diagramme de classe UML dans le cas de la conception de BD

41 Paquetages

Les paquetages (plus communeacutement appeleacutes ) sont des eacuteleacutements servant agrave organiser un modegravelepackage

Ils sont particuliegraverement utiles degraves que le modegravele comporte de nombreuses classes et que celles-ci peuvent ecirctre trieacutees selon plusieurs aspects structurants

Exemple

Exemple

Deacutefinition Package

homme (nom)

femme (mariage=gthomme nom) avec nom KEY

Contrainte PROJ(hommenom) = PROJ(femmemariage)

homme (nom)

femme (nom mariage=gthomme) avec mariage UNIQUE

Steacutereacuteotype

22

Notation des paquetages en UML

Exemple dutilisation des packages

On repreacutesente chaque classe au sein dun Il est alors possible de faire une preacutesentation globale du packagemodegravele (tous les ) partielle (une partie des ) ou centreacutee sur un seul packages packages package

Pour une repreacutesentation partielle ou centreacutee sur un on repreacutesente les concerneacutes avec leurs package packagesclasses propres ainsi que toutes les classes lieacutees des autres packages (et seulement celles-ci)

Preacutesentation partielle du modegravele centreacutee sur un package

Syntaxe

Exemple

Meacutethode

Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt

23

42 Steacutereacuteotype

Un steacutereacuteotype UML est une syntaxe permettant dajouter de la seacutemantique agrave la modeacutelisation des classes Il permet de deacutefinir des afin de regrouper conceptuellement un ensemble de classes (agrave linstar types de classedune classe qui permet de regrouper conceptuellement un ensemble dobjets)

Cest une meacutecanique de meacuteta-modeacutelisation elle permet deacutetendre le meacuteta-modegravele UML cest agrave dire le modegravele conceptuel du modegravele conceptuel

Un meacuteta-modegravele est le modegravele dun modegravele Par exemple le meacuteta-modegravele UML comprend les concepts de classe attribut association cardinaliteacute composition agreacutegation contraintes annotations On mobilise ces concepts (on les instancie) pour exprimer un modegravele particulier suivant le formalisme UML

Les steacutereacuteotypes permettent donc dajouter au meacuteta-modegravele UML standard celui que tout le monde utilise des concepts locaux pour enrichir le langage de modeacutelisation que lon utilise pour reacutealiser des modegraveles

Notation dun steacutereacuteotype en UML

Un steacutereacuteotype speacutecifique enrichit le meacuteta-modegravele UML mais selon une seacutemantique qui est propre agrave celui qui la poseacute non standard donc La conseacutequence est que pour un tiers linterpreacutetation du steacutereacuteotype nest plus normaliseacutee et sera potentiellement plus facilement erroneacutee Il convient donc de ne pas abuser de cette meacutecanique

Deux ou trois steacutereacuteotypes speacutecifiques correctement deacutefinis sont faciles agrave transmettre plusieurs dizaines repreacutesenteraient un nouveau langage complet agrave apprendre pour le lecteur du modegravele

Il existe des steacutereacuteotypes fournit en standard par UML ou communeacutement utiliseacutes par les modeacutelisateurs Lavantage est quil seront compris plus largement au mecircme titre que le reste du meacuteta-modegravele (ils ont une valeur de standard)

43 Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt

Deacutefinition Steacutereacuteotype UML

Deacutefinition Meacuteta-modegravele

Syntaxe

Conseil Steacutereacuteotypes speacutecifiques et steacutereacuteotypes standard

Syntaxe

Type utilisateurs steacutereacuteotype ltltdataTypegtgt

24

Steacutereacuteotype UML permettant dexprimer une eacutenumeacuteration

Exemple de modeacutelisation UML deacutenumeacuteration

44 Type utilisateurs steacutereacuteotype ltltdataTypegtgt

Les types utilisateurs permettent de deacutefinir des types complexes propres en extension des types primaires (entier chaicircne date)

Steacutereacuteotype dataType

Steacutereacuteotype dataType (exemple)

Cette modeacutelisation est eacutequivalente agrave la modeacutelisation des attributs composeacutes directement dans la classe principale Cest une repreacutesentation plus standard en UML

Exemple

Syntaxe

Exemple

Meacutethode Attributs composeacutes

Synthegravese sur la modalisation UML et relationnelle

25

Quelques eacuteleacutements de stylistique UML

26

-

- -

-

-

-

- - -

- - - -

1

2

3

5 Synthegravese sur la modalisation UML et relationnelle51 Quelques eacuteleacutements de stylistique UML

Toutes les associations doivent ecirctre nommeacutees (sauf composition heacuteritage agreacutegation)Ne pas utiliser de nom geacuteneacuterique pour les Classes comme Entiteacute Classe Objet TrucEacuteviter les noms geacuteneacuteriques pour les associations (comme est associeacute agrave)Attention au sens des compositions et agreacutegation le losange est cocircteacute ensemble et noubliez pas les cardinaliteacutes notamment cocircteacute parties

Nutilisez pas le souligneacute ni les en UML pour identifier les cleacutes preacutefeacuterez la contrainte keyPreacutefeacuterez lheacuteritage aux booleacuteens de typage en UMLLes attributs deacuteriveacutes sont reacuteserveacutes aux deacuterivations simples (des attributs de la mecircme classe) si cest plus complexe preacutefeacuterez des meacutethodes (et dans le doute preacutecisez les modes de calcul sur le scheacutema ou dans une note agrave part)Donnez des exemples de contenu lorsque ce nest pas eacutevident (lorsque le couple nom dattribut et type ne permet pas de faccedilon eacutevidente de comprendre de quoi lon parle)Inutile de deacuteclarer le type booleacuteen en UML utilisez-le directement comme un type de donneacutees connu

Si tous vos heacuteritages sont exclusifs notez-le agrave part pour alleacuteger votre scheacutema (et eacuteviter labondance de XOR)

52 Attention aux cleacutes artificielles

en UML on ne pose jamais de cleacutes artificiellesen relationnel on pose rarement des cleacute artificielles sauf dans le cas de cleacutes eacutetrangegraveres vraiment trop compliqueacuteesen SQL on peut poser des cleacutes artificielles si on a une bonne raison (ce nest donc pas systeacutematique et cest agrave justifier)

On najoutera pas de cleacute artificielle en UML au moment de la modeacutelisation conceptuelle des donneacutees

Formellement en UML la notion de cleacute nexiste pas (contrairement agrave l ) elle est ajouteacutee par les E-A

pratiquants des BD

Logiquement on a pas besoin de cette notion en UML les cleacutes artificielles servent en relationnel et dans certains cas uniquementPratiquement cela peut conduire agrave des situations absurdes (comme enlever au niveau logique des cleacutes artificielles ajouteacutees au niveau conceptuel)

Attention

Conseil

Compleacutement

Fondamental

Cleacutes artificielles et niveau conceptuel

Bibliographie commenteacutee sur la modeacutelisation UML

27

-

-

- -

-

- -

-

-

3

4

5

si on fait du non-relationnel on ne doit pas ajouter de cleacutes artificielles dans certains cas (limbrication typiquement) cela arrive mecircme en relationnel avec la transformation de lheacuteritage (dans certains cas toujours)

Meacutethodologiquement il faut se concentrer agrave chaque phase sur ce qui est important donc au moment du MCD on traduit les besoins on repegravere les contraintes explicites (cleacute uniciteacute non nulliteacute) sans se preacuteoccuper de ce qui sera rendu neacutecessaire par la suite par la modeacutelisation relationnelle (les cleacutes eacutetrangegraveres par exemple) ou limpleacutementation (loptimisation par exemple) Agrave chaque jour suffit sa peine Peacutedagogiquement enfin les deacutebutants ont tendance (agrave cause des environnements de conception graphique comme phpMyAdmin notamment) agrave systeacutematiser les cleacutes artificielles en SQL (on pourrait en discuter) mais eacutegalement agrave ne pas faire le travail de recherche des cleacutes naturelles (au niveau relationnel notamment ce qui est une faute de modeacutelisation) Donc au plus tard on fait intervenir les cleacutes artificielles au plus on a une chance de penser aux cleacutes naturelles

Soit le modegravele relationnel suivant

1 Etu (id numEtu) avec numEtu cleacute 2 UV (id codeUv) avec codeUv cleacute3 Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

La question qui permet dafficher la liste des eacutetudiants (numEtu) avec leurs UVs (codeUv) neacutecessite une jointure des cleacutes artificielles Un modegravele sans ces cleacutes artificielles aurait eacuteteacute plus performant pour agrave causereacutepondre agrave cette question puisque toutes les informations se trouvent dans la relation Inscriptions

1 Etu (numEtu) 2 UV (codeUv) 3 Inscriptions (uv=gtUV etu=gtEtu)

Ne soyez pas systeacutematiqueIl est en effet freacutequent dans un projet reacuteel dadopter des cleacutes artificielles presque systeacutematiquement vous pourrez le faire en connaissance de cause quand vous aurez bien compris pourquoi cest inteacuteressant et quand ccedila ne lest pasLes cleacutes artificielles sont inteacuteressantes pour autre chose que les performances (leacutevolutiviteacute par exemple choisissez-les quand vous savez pourquoi)Les cleacutes artificielles ne dispensent pas de rechercher les cleacutes naturelles Les cleacutes artificielles ne sont pas la seule faccedilon doptimiser une base de donneacutees (indexation deacutenormalisation)

53 Bibliographie commenteacutee sur la modeacutelisation UML

Il existe de nombreux outils de modeacutelisation UML On pourra citer

logiciel Open Source et multi-plateformes facile dusage (qui marche neacuteanmoins mieux sur Linux Dia

que sur Windows)

(version gratuite)Objecteering

Cleacutes artificielles et optimisation est-il toujours plus performant dutiliser des cleacutes artificielles

Conseil

Compleacutement Outils de modeacutelisation UML

Etu (id numEtu) avec numEtu cleacute

UV (id codeUv) avec codeUv cleacute

Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

Etu (numEtu)

UV (codeUv)

Inscriptions (uv=gtUV etu=gtEtu)

Bibliographie commenteacutee sur la modeacutelisation UML

28

- - - - - -

- - - - - -

Agrave voir eacutegalement en Open Source ou (non testeacute par lauteur)ArgoUML EclipseUML

UML2 en action

Pour un aperccedilu plus deacutetailleacute des possibiliteacutes dexpression du diagramme de classe UML lire le chapitre 7 Deacuteveloppement du modegravele statique (pages 133 agrave 163)

On pourra notamment y trouver

Lassociation dagreacutegationLes proprieacuteteacutes dassociationLexpression de rocircles dans les associationsLes attributs de classeLes qualificatifsLes opeacuterations (ou meacutethodes)

Le chapitre donne de plus des conseils meacutethodologiques pour la conception (voir en particulier la synthegravese page 163)

On pourra eacutegalement y trouver

Des principes de choix de modeacutelisation entre attributs et classes et sur la segmentation des classesDes principes de seacutelection des attributs (redondance avec les associations avec les classes etc)Des principes de seacutelection des associationsDes principes de choix de cardinaliteacute (notamment pour la gestion dhistorisation)Des principes de seacutelection des relations de geacuteneacuteralisation (heacuteritage)Des principes dintroduction de meacutetaclasses (type)s

U M L e n Franccedilais

Une tregraves bonne reacutefeacuterence en ligne sur la modeacutelisation UML avec des cours des liens vers la norme etc

Le contenu deacutepasse tregraves largement lusage dUML pour la modeacutelisation de BD (et ne fait dailleurs pas de reacutefeacuterence preacutecise agrave ce sous-ensemble particulier)

On pourra consulter en particulier le chapitre sur les diagrammes de classe httpumlfreefrcoursi-p14html

UML en 5 eacutetapes

On consultera en particulier le tutoriel sur les diagrammes de classe httpdeveloppeurjournaldunetcomtutorielcpt010607cpt_umlintroshtml

Cinq petits conseils pour un scheacutema UML efficace

Compleacutement Modeacutelisation UML

Compleacutement Reacutefeacuterence UML en ligne

Compleacutement Tutoriel sur la modeacutelisation UML

Compleacutement Conseils

Synthegravese Les diagrammes de modeacutelisation conceptuelle

29

-

-

- -

-

- -

-

-

- -

-

- - - -

-

-

(chapitre 3)UML2 par la pratique

Des explications exemples et eacutetudes de cas

54 Synthegravese Les diagrammes de modeacutelisation conceptuelle

Un modegravele conceptuel peut ecirctre repreacutesenteacute sous forme de diagramme E-A ou sous forme de diagramme de classe UML

Classe ou Entiteacute

Attribut ou Proprieacuteteacute

TypeacuteMulti-valueacuteComposeacuteDeacuteriveacute

Meacutethode

ParamegravetresValeur de retour

Association

Association

VerbeCardinaliteacute

Heacuteritage

Heacuteritage dattributsHeacuteritage de meacutethodes

Composition (ou entiteacute faible)

Cardinaliteacute

Compleacutement Pratique

Exercices

30

-

-

-

-

-

-

-

1 2

1

1 Exercice Lab III[20 min]

Description du problegraveme

Un laboratoire souhaite geacuterer les meacutedicaments quil conccediloit

Un meacutedicament est deacutecrit par un nom qui permet de lidentifier En effet il nexiste pas deux meacutedicaments avec le mecircme nom Un meacutedicament comporte une description courte en franccedilais ainsi quune description longue en latin On gegravere aussi le conditionnement du meacutedicament cest agrave dire le nombre de pilules par boicircte (qui est un nombre entier)Agrave chaque meacutedicament on associe une liste deacutedieacutee de contre-indications geacuteneacuteralement plusieurs parfois aucune Les contre-indications sont trieacutees par ordre dimportance Lordre est total est strict pour un meacutedicament donc chaque contre-indication possegravede une importance et il nexiste pas deux contre-indications associeacutees au mecircme meacutedicament avec la mecircme importanceTout meacutedicament possegravede au moins un composant souvent plusieurs Un composant est identifieacute par un code unique et possegravede un intituleacute Tout composant peut intervenir dans la fabrication de plusieurs meacutedicaments Il existe des composants qui ne sont pas utiliseacutes pour fabriquer des meacutedicaments et que lon veut quand mecircme geacuterer

Donneacutees de test

Afin de mateacuterialiser notre base de donneacutees nous obtenons les descriptions suivantes

Le a pour description courte et pour description longue Chourix Meacutedicament contre la chute des chouxlaquo raquoVivamus fermentum semper porta Nunc diam velit adipiscing ut tristique vitae sagittis vel odio laquo

Il est conditionneacute en boicircte de 13Maecenas convallis ullamcorper ultricies Curabitur ornare raquoSes contre-indications sont

Le Chourix ne doit jamais ecirctre pris apregraves minuitLe Chourix ne doit jamais ecirctre mis au contact avec de leau

Ses composants sont le et le HG79 SN50Le a pour description courte et pour Tropas Meacutedicament contre les dysfonctionnements intellectuelslaquo raquodescription longue Suspendisse lectus leo consectetur in tempor sit amet placerat quis neque Etiam laquo

Il est conditionneacute en boicircte de 42luctus porttitor lorem sed suscipit est rutrum non raquoSes contre-indications sont

Le Tropas doit ecirctre gardeacute agrave labri de la lumiegravere du soleil

Son unique composant est le HG79Les composants existants sont

HG79 Vif-argent alleacutegeacute

ExercicesII

Exercice Eacutetudiants et UVs (introduction)

31

- - -

- - HG81 Vif-argent alourdi

SN50 Pur eacutetain

Question 1

Question 2

Question 3

2 Exercice Eacutetudiants et UVs (introduction)[20 min]

On dispose du scheacutema UML ci-apregraves qui deacutecrit des eacutetudiants des UV les notes obtenues par les eacutetudiants agrave ces UV et les diplocircmes dorigine de ces eacutetudiants

Eacutetudiants et UVs

key deacutesigne des cleacutes candidates ici toutes les cleacutes ne sont composeacutees que dun seul attributlocal key deacutesigne une cleacute localeun semestre est de la forme PYYYY ou AYYYY (ougrave YYYY deacutesigneacute une anneacutee sur 4 chiffre) exemple A2013 P2014

Rappel Notion de cleacute locale dans classes dassociation (cf p49)

Effectuez le modegravele conceptuel en UML de ce problegraveme

Indices

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans deacutedieacuteeles donneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition

[ ]solution ndeg4 [ ] p56

En mobilisant les regravegles adeacutequates proposer un modegravele logique de donneacutees correspondant en relationnel Le repeacuterage des domaines et des cleacutes est obligatoire

[ ]solution ndeg5 [ ] p57

Dessiner des tableaux remplis avec les donneacutees fournies en exemple afin de montrer que le modegravele fonctionne selon le besoin exprimeacute initialement On pourra mettre le premier mot seulement des descriptions pour gagner du temps

[ ]solution ndeg6 [ ] p57

Exercice Super-heacuteros relationnels I

32

-

-

Question

3 Exercice Super-heacuteros relationnels I[20 min]

La gamme de super-heacuteros GARVEL veut reacutealiser la base de donneacutees de leurs figurines articuleacutees La socieacuteteacute a fait reacutealiser un modegravele UML qui doit servir de point de deacutepart agrave la mise en œuvre

Modegravele UML Figurines GARVEL

Question

4 Exercice Objets Numeacuteriques Libres[30 min]

Lassociation ONL (Objets Numeacuteriques Libres) est une association de promotion des logiciels libres Elle souhaite exposer sur un site Internet une liste de logiciels libres Ce site sera adosseacute agrave une base de donneacutees relationnelle ou relationnel-objet La premiegravere eacutetape de sa deacutemarche est de reacutealiser un modegravele conceptuel repreacutesentant ce quelle souhaite faire

La base de donneacutees permet de geacuterer des applicationsLes applications sont identifieacutees par leur nom (LibreOffice Gimp) et leur version (10 21) et comportent une description courte et une URL Tous les attributs sont obligatoires Chaque application a une URL uniqueLa base de donneacutees permet de geacuterer des librairies

Traduire le scheacutema en modegravele logique relationnel ( )MLD1

On choisira obligatoirement les cleacutes primaires parmi celles neacutecessitant le plus petit nombre de bits possible pour leur codage

[ ]solution ndeg7 [ ] p57

Transformer le modegravele UML en modegravele relationnel (justifier les passages non triviaux en particulier la relation dheacuteritage)

[ ]solution ndeg8 [ ] p58

Exercice Objets Numeacuteriques Libres

33

-

-

-

-

-

-

-

-

-

-

-

-

Les librairies sont des logiciels mais pas des applications Elles ont les mecircmes attributs que les applications (nom version description courte URL) mais les URL ne sont pas neacutecessairement uniques Les applications peuvent deacutependre de librairies ou dautres applications et les librairies peuvent deacutependre dautres librairies (mais pas dune application)La base de donneacutees permet de geacuterer des composantsLes composants sont inteacutegreacutes agrave une application ou librairie Les composants ont un code interne agrave lapplication ou la librairie quil servent une version et une description courte et une URL Le code et le numeacutero de version permettent didentifier localement le composant au sein de la librairie ou de lapplication la description courte et lURL sont optionnellesLa base de donneacutees permet de geacuterer des licencesLes applications librairies et composants sont attacheacutes agrave une ou plusieurs licences identifieacutees par leur nom (GPL MPL) leur version et leur langue et comportant le texte inteacutegral de la licence Les versions des logiciels et licences sont de type numeacutero de licence majeur point numeacutero de licence mineur comme 10 ou 22La base de donneacutees permet de geacuterer des cateacutegoriesChaque logiciel est rangeacute dans une cateacutegorie principale et plusieurs cateacutegories secondaires Exemple de cateacutegories bureautique dessin multimeacutedia physique

Exemple (factice) de donneacutees

Applications

Scenari 41 une chaicircne eacuteditoriale XML httpscenariorg deacutepend de Libreoffice 43 et de ImageMagick 68Libreoffice 43 une suite bureautique WYSIWYG httplibreofficeorg

Librairie

ImageMagick 68 permet de creacuteer de convertir de modifier et dafficher des images http imagemagickorg

Composant

impng 02 est un composant de ImageMagick 68 permet de compresser une image au format PNG

Toutes ces applications librairies et composants sont disponibles sous une licence LGPL 30 et GPL 30 franccedilaisesToutes ces applications et librairies sont rangeacutees dans la cateacutegorie principale document Scenari est rangeacute dans la cateacutegorie secondaire Eacutedition WYSIWYM Libreoffice dans la cateacutegorie secondaire Bureautique ImageMagick dans la cateacutegorie secondaire Multimeacutedia

Question

Reacutealiser un MCD en UML[ ]solution ndeg9 [ ] p58

Devoirs

34

1 Exercice Arbre de scegravene 3D[30 minutes]

On souhaite pouvoir geacuterer les diffeacuterents eacuteleacutements composant des scegravenes 3D dans une base de donneacutees Une scegravene contient des objets qui eux-mecircmes peuvent appartenir agrave plusieurs scegravenes (au moins une) mais il ne peut y avoir plusieurs fois le mecircme objet dans une mecircme scegravene Dans chaque scegravene les objets peuvent ecirctre visibles ou invisibles Les scegravenes et les objets sont identifieacutes de maniegravere unique par un nom Une scegravene peut ecirctre active ou inactive Un objet a comme proprieacuteteacute une position dans lespace repreacutesenteacutee par un vecteur de reacuteels agrave trois composantes (x y z) Les objets sont organiseacutes de maniegravere hieacuterarchique un objet peut ecirctre parent de plusieurs objets et chaque objet peut avoir au plus un parent Des scripts peuvent ecirctre associeacutes agrave un objet ou agrave une scegravene (agrave lun ou agrave lautre mais pas aux deux) Un script est identifieacute de maniegravere unique par un nom et possegravede eacutegalement un attribut permettant de connaicirctre son eacutetat (actif ou inactif) Un personnage est un objet particulier qui possegravede des animations Une animation est relative agrave un personnage et est identifieacutee de maniegravere locale par un nom Agrave un objet est associeacute un maillage et celui-ci peut ecirctre utiliseacute par plusieurs objets Un maillage est identifieacute de maniegravere unique par un nom et est composeacute de plusieurs eacuteleacutements Chaque eacuteleacutement est relatif agrave un maillage et est identifieacute de maniegravere locale par un numeacutero Il existe exactement trois types deacuteleacutement des nœuds des arrecirctes et des faces Une face est deacutelimiteacutee par trois arrecirctes et chaque arrecircte est deacutelimiteacutee par deux nœuds Plusieurs arrecirctes peuvent partager un mecircme nœud et plusieurs faces peuvent partager une mecircme arrecircte Afin deacutevaluer la complexiteacute dune scegravene on souhaite pouvoir calculer le nombre de faces afficheacutees pour une scegravene donneacutee (cest-agrave-dire la somme du nombre de faces du maillage associeacute aux objets visibles de la scegravene) Un maillage possegravede plusieurs mateacuteriaux identifieacutes de maniegravere unique par un nom Un mateacuteriau peut ecirctre associeacute agrave plusieurs maillages Un mateacuteriau est caracteacuteriseacute par une couleur deacutefinie par un vecteur dentiers agrave quatre composantes rouge vert bleu alpha Un mateacuteriau peut posseacuteder une texture et celle-ci peut ecirctre utiliseacutee par plusieurs mateacuteriaux Une texture est identifieacutee de maniegravere unique par un nom et possegravede comme attribut une image

Question 1

Question 2

DevoirsIII

Proposez une clarification de ce problegraveme On pourra reclasser les informations par grande cateacutegorie scegravene objets scripts

Eacutetablissez un modegravele conceptuel en UML de ce problegraveme

Compleacutement Exercices de modeacutelisation suppleacutementaire

35

1 Exercice Appartements agrave louer[30 min]

Une agence dimmobilier (ventes et locations) veut geacuterer son parc dappartements dans une base de donneacutees Chaque appartement possegravede plusieurs piegraveces qui peuvent ecirctre des piegraveces dhabitation des piegraveces de rangement ou des commoditeacutes

Chaque piegravece a une superficie un nombre de prises eacutelectriques et des meubles Pour ces derniers on veut enregistrer le nom du modegravele et le type (chaise lit four etc) Rien nempecircche quune piegravece comporte plusieurs meubles identiques (par exemple plusieurs chaises PIN IQUEA) Les piegraveces dhabitation ont une ou plusieurs fenecirctres les piegraveces de rangement ont une ou plusieurs eacutetagegraveres et une surface de rangement utile totale On veut aussi savoir dans quelles piegraveces de rangement se situent les tableaux eacutelectriques de lappartement Finalement les piegraveces commoditeacutes peuvent ecirctre de trois types cuisine toilette ou salle de bain

Lagence veut aussi enregistrer les portes entre les diffeacuterentes piegraveces Une porte peut ecirctre agrave simple battant double battant coulissante ou une simple ouverture

Chaque appartement a une adresse une superficie totale (qui est la somme des superficies des piegraveces) et un type qui est la lettre T suivie du nombre de piegraveces dhabitation de lappartement Pour un appartement donneacute chaque piegravece est identifieacutee par un numeacutero (commenccedilant au numeacutero 1)

Lagence veut eacutegalement enregistrer le quartier ougrave se trouve lappartement auquel est lieacute un prix par megravetre carreacute Finalement elle veut garder un historique de lhistoire de lappartement les peacuteriodes pour lesquelles il est libre occupeacute en travaux ou vendu

Question

2 Exercice Objectifs[40 min]

Vous prenez la preacutesidence de lassociation Objectifs dont lobjet est daider ses eacutetudiants membres agrave mener des projets dans le cadre de leurs eacutetudes

Compleacutement Exercices de modeacutelisation suppleacutementaire

IV

Reacutealisez le diagramme UML reacutepondant aux besoins de cette agence[ ]solution ndeg10 [ ] p59

Exercice Objectifs

36

- - -

-

-

- - -

Vous constatez en arrivant dans lassociation que personne ne sait exactement quels sont les projets en cours ni qui fait quoi dans les projets Vous ne parvenez pas non plus agrave obtenir une liste exacte des partenaires sur lesquels lassociation peut compter La seule chose sur laquelle vous parvenez agrave mettre la main est un fichier tableur vaguement agrave jour

Vous deacutecidez quil est plus que temps de mettre en place une base de donneacutees afin dassurer la bonne gestion des informations les plus importantes pour lassociation Vous vous attachez pour cela agrave reacutealiser une analyse des besoins

Analysez les documents ci-apregraves

Etat des projets

Eacutetat des projets de lassociation Objectifs

Recueil de besoins

Agrave partir de leacutetude du fonctionnement actuel de lassociation vous relevez les choses importantes agrave geacuterer suivantes

Les membres de lassociation geacuteneacuteralement identifieacutes par leur preacutenomLes projets geacutereacutes par lassociation avec des dates de deacutebut et de fin preacutecises et un chef de projetLe deacutetail des tacircches de chaque projet avec leurs dates de deacutebut et de fin aussi et la liste de tous les membres qui y participentLa liste des partenaires des projets avec leur rocircle preacutecis pour chacun des projets auxquels ils participent

Afin de mieux geacuterer les attributions des projets il serait eacutegalement inteacuteressant de creacuteer une liste des speacutecialiteacutes correspondant agrave ce qui ce fait dans lassociation et daffecter une speacutecialiteacute agrave chaque membre ainsi quune agrave chaque projet pour voir si ce sont bien les membres les mieux adapteacutes qui travaille sur les projets

Recueil de donneacutees

Les discussions avec les anciens membres de lassociation vous apprennent les choses suivantes

Lassociation a termineacute de geacuterer les trois projets Comeacutedie Musicale geacutereacutee par Nathalie sur les trois premiers mois du semestre dautomne 1001 Science en fecircte geacutereacutee par Pierre sur tout le semestre de printemps 1003 et Nuit du picolo geacutereacutee par Julien en novembre 1001Les speacutecialiteacutes recenseacutees pour le moment sont Ville Universiteacute Sport Entreprise Culture InternationalIl faut au moins dix membres agrave lassociation (sinon elle ferme) recruter ceux qui manquentAidez lassociation agrave diviser ses projets en tacircches

Exercice Objectifs

37

- Les partenaires suivants aident ou ont aideacute lassociation la mairie pour la comeacutedie musicale et la science en fecircte qui apporte un soutien financier le ministegravere de la culture qui apporte son soutien logistique agrave la science en fecircte lassociation des commerccedilants de la ville qui apporte son soutien publicitaire agrave la comeacutedie musicale 1664 qui offre ses biegraveres agrave moitieacute prix pour la nuit du Picolo

Question 1

Question 2

Question 3

Afin de preacuteparer une analyse des besoins sommaire listez les donneacutees que vous devrez geacuterer agrave laide des documents et recueils de discussion agrave votre disposition Faites des hypothegraveses lorsque les donneacutees sont incomplegravetes ou incoheacuterentes

[ ]solution ndeg11 [ ] p59

Reacutealiser le MCD en UML et en E-A agrave partir des donneacutees preacutepareacutees dans la question preacuteceacutedente[ ]solution ndeg12 [ ] p60

Reacutealiser le MLD en relationnel en traduisant votre MCD[ ]solution ndeg13 [ ] p61

Contenus annexes

38Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

- - -

gt Attributs

Un attribut est une information eacuteleacutementaire qui caracteacuterise une classe et dont la valeur deacutepend de lobjet instancieacute

Le domaine des valeurs que peut prendre lattribut est fixeacute a prioriUn attribut est typeacute

Il peut prendre plusieurs valeurs distinctes dans son domaineUn attribut peut ecirctre multivalueacute Sa valeur alors est une fonction sur dautres attributs de la classeUn attribut peut ecirctre deacuteriveacute

(ou composite) Il joue alors le rocircle dun groupe dattributs (par Un attribut peut ecirctre composeacuteexemple une adresse peut ecirctre un attribut composeacute des attributs numeacutero type de voie nom de la voie) Cette notion renvoie agrave la notion de variable de type dans les langages de Record

programmation classiques

En UML on preacutefegravere lusage de meacutethodes aux attributs deacuteriveacutes On utilisera toujours des meacutethodes degraves que la valeur de lattribut deacuteriveacute deacutepend dautres attributs exteacuterieurs agrave sa classeEn UML on preacutefegravere lusage de compositions aux attributs composeacutes On utilisera toujours des compositions pour les attributs composeacutes et multivalueacutes

1 attributtype2 attribut_multivalueacute[nbMinValeursnbMaxValeurs]type3 attribut_deacuteriveacutetype4 attribut_composeacute5   - sous-attribut1type6   - sous-attribut2type7   -

Contenus annexes

Deacutefinition Attribut

Attention On utilise peu les attributs deacuteriveacutes et composeacutes en UML

Syntaxe

attributtype

attribut_multivalueacute[nbMinValeursnbMaxValeurs]type

attribut_deacuteriveacutetype

attribut_composeacute

  - sous-attribut1type

  - sous-attribut2type

  -

Contenus annexes

39Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Repreacutesentation dattributs en UML

Dans cet exemple les attributs Nom Preacutenom sont de type lun de 20 caractegraveres et lautre de 10 stringtandis que DateNaissance est de type et Age de type Preacutenom est un attribut multivalueacute ici date integerune personne peut avoir de 1 agrave 3 preacutenoms Age est un attribut deacuteriveacute il est calculeacute par une fonction sur DateNaissance

Meacutethodes (cf p39)

Composition (cf p5)

gt Meacutethodes

Une meacutethode (ou opeacuteration) est une fonction associeacutee agrave une classe dobjet qui permet dagir sur les objets de la classe ou qui permet agrave ces objets de renvoyer des valeurs (calculeacutees en fonction de paramegravetres)

1 methode(paramegravetres)type

Pour la modeacutelisation des bases de donneacutees les meacutethodes sont surtout utiliseacutees pour repreacutesenter des donneacutees calculeacutees (agrave linstar des attributs deacuteriveacutees) ou pour mettre en exergue des fonctions importantes du systegraveme cible Seules les meacutethodes les plus importantes sont repreacutesenteacutees lapproche est moins systeacutematique quen modeacutelisation objet par exemple

Lors de la transformation du modegravele conceptuel UML en modegravele logique relationnel les meacutethodes ne Leur repeacuterage au niveau conceptuel sert donc surtout daide-seront geacuteneacuteralement pas impleacutementeacutees

meacutemoire pour limpleacutementation au niveau applicatif

Exemple La classe Personne

Compleacutement Voir aussi

Deacutefinition Meacutethode

Syntaxe

Remarque Meacutethodes et modeacutelisation de BD

Remarque Meacutethodes relationnel relationnel-objet

methode(paramegravetres)type

Contenus annexes

40Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Au contraire un modegravele logique relationnel-objet permettra limpleacutementation de meacutethodes directement associeacutees agrave des tables Leur repeacuterage au niveau conceptuel est donc encore plus important

Transformation des meacutethodes par des vues (cf p40)

gt Transformation des meacutethodes par des vues

Lorsquune meacutethode est speacutecifieacutee sur un diagramme UML pour une classe C si cette meacutethode est une fonction relationnelle (elle renvoie une unique valeur et elle peut ecirctre reacutesolue par une requecircte SQL) alors on creacutee une vue qui reprend les attributs de la classe C et ajoute des colonnes calculeacutees pour les meacutethodes

Les attributs deacuteriveacutes eacutetant apparenteacutes agrave des meacutethodes ils peuvent eacutegalement ecirctre geacutereacutes par des vues

gt Classe dassociation

On utilise la notation des classes dassociation lorsque lon souhaite ajouter des proprieacuteteacutes agrave une association

Notation dune classe dassociation en UML

On reacuteserve en geacuteneacuteral les classes dassociation aux associations NM

Il est toujours possible de reacuteduire une classe dassociation sur une association 1N en migrant ses attributs sur la classe cocircteacute N et cest en geacuteneacuteral plus lisible ainsi

Compleacutement

Meacutethode

Remarque Attributs deacuteriveacutes

Deacutefinition Classe dassociation

Syntaxe Notation dune classe dassociation en UML

Meacutethode

Contenus annexes

41Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

-

Emplois

Selon le standard UML une classe dassociation est une classe et agrave ce titre elle peut ecirctre mobiliseacutee dans dautres associations ou dans des heacuteritages Nous deacuteconseillons neacuteanmoins ces notations qui ont tendance agrave complexifier la lecture et la transformation du diagramme

Nous conseillons donc de ne jamais associer une classe dassociation

gt Transformation des attributs

Pour chaque attribut eacuteleacutementaire et monovalueacute dune classe

on creacutee un attribut correspondant

Attribut

Classe1(ab)

Pour chaque attribut composite comprenant N sous-attributs dune classe

on creacutee N attributs correspondantsdont les noms sont la concateacutenation du nom de lattribut composite avec celui du sous-attribut

Exemple Exemple de classe dassociation

Conseil

Meacutethode Attributs simples

Meacutethode Attributs composites

Contenus annexes

42Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- - - -

Attribut composeacute

Classe1(ab_b1b_b2)

Pour chaque attribut multivalueacute b dune classe C

on creacutee une nouvelle relation RBqui comprend un attribut monovalueacute correspondant agrave bplus la cleacute de la relation repreacutesentant C la cleacute de RB est la concateacutenation des deux attributs

Attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Dans le cas ougrave le nombre maximum de est fini et petit on peut eacutegalement adopter la transformation b

suivante Classe1(ab1b2b3b4b5b6b7b8b9b10)

Si le nombre dattributs est infini ( ) cest impossible sil est trop grand ce nest pas souhaitableb[1]

On combine les regravegles eacutenonceacutees pour les attributs composeacutes et pour les attributs multivalueacutes

Attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Transformation des compositions (cf p42)

Meacutethode Attributs multivalueacutes

Meacutethode Attributs multivalueacutes (meacutethode alternative)

Meacutethode Attributs composeacutes multivalueacutes

Rappel Voir aussi

Contenus annexes

43Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

gt Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Compleacutement Attributs multivalueacutes et composeacutes

Contenus annexes

44Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

Rappel Voir aussi

Rappel

Meacutethode

Contenus annexes

45Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p48)

gt Transformation des associations 1N

Pour chaque association binaire de type 1N

on ajoute agrave la relation cocircteacute N une cleacute eacutetrangegravere vers la relation cocircteacute 1

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Meacutethode

Contenus annexes

46Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Association 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Contrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p46)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

R1

Compleacutement

Rappel

Meacutethode

Contenus annexes

47Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p47)

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Deacutefinition Projection

Contenus annexes

48Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Deacutefinition Projection

Contenus annexes

49Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Transformation des classes dassociation

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de lassociation NM

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Meacutethode Classe dassociation NM

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

4Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Preacuterequis

Savoir faire un MCD UML avec des classes des associations simples de lheacuteritageSavoir faire un MLD relationnel agrave parti dun MCD UML avec des classes des associations simples de lheacuteritage

Objectifs

Cours

5

-

-

1 Modeacutelisation avanceacutee des associations en UMLObjectifs

Maicirctriser le diagramme de classe UML dans le cas de la conception de BD

11 Exercice Entreprise

12 Composition

On appelle composition une association particuliegravere qui possegravede les proprieacuteteacutes suivantes

La composition associe une classe composite et des classes parties tel que tout objet partie appartient agrave un et un seul objet composite Cest donc une association 1N (voire 11)La composition nest pas partageable donc un objet partie ne peut appartenir quagrave un seul objet composite agrave la fois

CoursI

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

[ ]solution ndeg1 [ ] p53

Deacutefinition Association de composition

Composition

6

- -

-

- -

- Le cycle de vie des objets parties est lieacute agrave celui de lobjet composite donc un objet partie disparaicirct quand lobjet composite auquel il est associeacute disparaicirct

La composition est une association particuliegravere (binaire de cardinaliteacute contrainte)La composition nest pas symeacutetrique une classe joue le rocircle de conteneur pour les classes lieacutees elle prend donc un rocircle particulier a prioriLa composition est une agreacutegation avec des contraintes suppleacutementaires (non partageabiliteacute et cycle de vie lieacute)

Notation de la composition en UML

La cardinaliteacute cocircteacute composite est toujours de exactement 1

Cocircteacute partie la cardinaliteacute est libre elle peut ecirctre 01 1 ou bien 1

Un livre

On voit bien ici quun chapitre na de sens que faisant partie dun livre quil ne peut exister dans deux livres diffeacuterents et que si le livre nexiste plus les chapitres le composant non plus

La composition permet dexprimer une association analogue agrave celle qui relie une entiteacute faible agrave une entiteacute

identifiante en modeacutelisation Lentiteacute de type faible correspond agrave un objet partie et lentiteacute identifiante agrave E-A

un objet composite

Une composition avec une classe partie doteacutee dun seul attribut peut seacutecrire avec un attribut multivalueacuteUn attribut composeacute et multivalueacute peut seacutecrire avec une composition

Remarque

Syntaxe Notation dune composition en UML

Attention Composition et cardinaliteacute

Exemple Exemple de composition

Remarque Composition et entiteacutes faibles

Conseil Composition et attribut multivalueacute

Agreacutegation

7

- - Attributs (cf p38)

Agreacutegation (cf p7)

13 Agreacutegation

Lagreacutegation est une association particuliegravere utiliseacutee pour preacuteciser une relation toutpartie (ou ensembleeacuteleacutement) on parle dassociation meacutereacuteologique

Notation de lagreacutegation en UML

La cardinaliteacute peut ecirctre exprimeacutee librement en particulier les instances de la classe Eacuteleacutement peuvent ecirctre associeacutees agrave plusieurs instances de la classe Ensemble et mecircme de plusieurs classes

Lagreacutegation garde toutes les proprieacuteteacutes dune association classique (cardinaliteacute cycle de vie etc) elle ajoute simplement une terminologie un plus preacutecise via la notion de toutpartie

14 Explicitation des associations (sens de lecture et rocircle)

Il est possible dajouter le sens de lecture du verbe caracteacuterisant lassociation sur un diagramme de classe UML afin den faciliter la lecture On ajoute pour cela un signe ou (ou un triangle noir) agrave cocircteacute du nom de lt gt

lassociation

Il est possible de preacuteciser le rocircle joueacute par une ou plusieurs des classes composant une association afin den faciliter la compreacutehension On ajoute pour cela ce rocircle agrave cocircteacute de la classe concerneacutee (parfois dans un petit encadreacute colleacute au trait de lassociation

Rocircle et sens de lecture sur une association

Rappel Voir aussi

Deacutefinition Association dagreacutegation

Syntaxe

Attention

Syntaxe Sens de lecture

Syntaxe Rocircle

Exemple

Notion de cleacute locale dans les compositions et les associations NM

8

- - -

15 Associations reacuteflexives

Une association reacuteflexive est une association qui associe une classe avec elle-mecircme

Association reacuteflexive laquo ami raquo

Lexplicitation des associations est souvent utile dans le cas des associations reacuteflexives non symeacutetrique (ou chaque objet ne joue pas le mecircme rocircle)

Une instance peut ecirctre associeacutee avec elle-mecircme dans le cas de dune association reacuteflexive

Si lon souhaite exprimer le contraire (une instance peut ecirctre associeacutee avec dautres instances de la mecircme classe mais pas avec elle-mecircme)

on ajoute une contrainte en UML (par exemple les personnes ne se marient pas avec elles-mecircmes) que lon traduira en relationnel par une contrainte du type AVEC pk fk

que lon traduira en SQL par une clause du type CHECK pk = fk

16 Notion de cleacute locale dans les compositions et les associations NM

Le concept de cleacute locale appartient au niveau conceptuel il est heacuteriteacute de lentiteacute faible du modegravele conceptuel Entiteacute-Association (eacutequivalent de la composition en UML) Dans une entiteacute faible ou une composition une cleacute de la classe composant est dite locale car elle ne permet didentifier lobjet que si lon connaicirct la classe composite

Dans certaines constructions en UML (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Deacutefinition Association reacuteflexive

Exemple

Meacutethode

Attention Auto-association dans les associations reacuteflexives

Deacutefinition

Attention

Classe dassociation avec cleacute locale

9

Dans une associations NM on peut avoir des (vraies) cleacutes ou des cleacutes locales En revanche dans une composition on na que des cleacutes locales en effet si le composant est identifiable indeacutependamment de son composite cest en geacuteneacuteral quil a une vie propre et donc que lon est pas en preacutesence dune composition

17 Classe dassociation avec cleacute locale

Classe dassociation (cf p40)

Dans lexemple suivant chaque personne peut avoir un emploi dans plusieurs socieacuteteacutes mais elle ne peut pas avoir plusieurs emplois dans une mecircme socieacuteteacute

Emplois

La transformation en relationnelle est coheacuterente avec cette contrainte

1 Socieacuteteacute()2 Personne()3 Emploi(personne=gtPersonne societe=gtSociete postestring salaireinteger quotitenumeric(12))

La speacutecification dune cleacute locale dans emploi par exemple ici le poste permet de lever cette contrainte lorsquon le souhaite en permettant didentifier chaque instance de lassociation ici lemploi dune personne par sa socieacuteteacute

Attention

Rappel

Contrainte inheacuterente agrave la relation NM

Meacutethode Inteacuterecirct de la cleacute locale

Socieacuteteacute()

Personne()

Emploi(personne=gtPersonne societe=gtSociete postestring salaireinteger

quotitenumeric(12))

Associations ternaires

10

La transformation en relationnelle permettra de maintenir la modeacutelisation en ajoutant la cleacute locale agrave la cleacute initiale

1 Socieacuteteacute()2 Personne()3 Emploi(personne=gtPersonne societe=gtSociete postestring salaireinteger quotitenumeric(72))

18 Associations ternaires

Notation dune association ternaire

Il est toujours possible de reacuteeacutecrire une association ternaire avec trois associations binaires en transformant lassociation en classe

Syntaxe

Conseil Ne pas abuser des associations ternaires

Socieacuteteacute()

Personne()

Emploi(personne=gtPersonne societe=gtSociete postestring salaireinteger

quotitenumeric(72))

Passage UML-Relationnel Associations avanceacutees

11

En pratique on nutilise jamais en UML dassociation de degreacute supeacuterieur agrave 3

2 Passage UML-Relationnel Associations avanceacuteesObjectifs

Savoir faire le passage dun scheacutema conceptuel UML agrave un scheacutema relationnel dans tous les cas

Reconnaicirctre les cas de transformation qui se traitent toujours de la mecircme faccedilon et ceux qui neacutecessite une modeacutelisation compleacutementaire

21 Trousseau de cleacutes

En UML et en relationnel il existe plusieurs termes mobilisant le mot laquo cleacute raquo le seul concept qui est commun est le concept de Tous les autres sont speacutecifiques au niveau conceptuel ou relationnelcleacute

Cleacute (key)

Cleacute locale (local key)

Cleacute (key)

Cleacute candidate (candidate key)

Cleacute primaire (primary key) et Cleacute alternative (alternate key)

Cleacute artificielle (surrogate key) et Cleacute naturelle (natural key business key)

Cleacute eacutetrangegravere (foreign key)

Conseil Pas de degreacute supeacuterieur agrave 3

Attention

Rappel Concept commun au niveau UML et relationnel

Rappel Concept speacutecifique au niveau UML

Rappel Concepts speacutecifiques au niveau relationnel

Transformation des compositions

12

- -

Deacutefinition des cleacutes en relationnel

22 Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Transformation des agreacutegations

13

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

23 Transformation des agreacutegations

Les associations de type agreacutegation se traitent de la mecircme faccedilon que les associations classiques

Agreacutegation 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Compleacutement Attributs multivalueacutes et composeacutes

Rappel Voir aussi

Rappel Agreacutegation

Transformation des classes dassociation avec cleacute locale

14

- -

Agreacutegation NM

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2)

24 Transformation des classes dassociation avec cleacute locale

Les attributs de la classe dassociation

sont ajouteacutes agrave la relation issue de lassociation NM la cleacute locale de la classe dassociation est concateacuteneacutee aux cleacutes eacutetrangegraveres composant deacutejagrave la cleacute primaire de la relation dassociation

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Meacutethode Classe dassociation NM

Exercice

15

25 Correspondance entre UML et relationnel

Passsage UML vers Relationnel

Exercice

16

26 ExerciceQuel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

[ ]solution ndeg2 [ ] p53

Exercice

17

27 ExerciceSoit le scheacutema UML suivant

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

[ ]solution ndeg3 [ ] p54

Modeacutelisation avanceacutee des associations 11 en relationnel

18

-

- -

-

-

3 Modeacutelisation avanceacutee des associations 11 en relationnelObjectifs

Savoir faire le passage dun scheacutema conceptuel UML agrave un scheacutema relationnel

Connaicirctre les choix possibles pour le cas de lassociation 11 et savoir faire le meilleur choix

Il existe des formulations conceptuelles en UML qui sont plus deacutelicates agrave traduire au niveau logique en relationnel comme lassociation 11 Ces cas requiegraverent un choix eacuteclaireacute de la part du concepteur

31 Transformation des associations 11 (approche geacuteneacuterale)

Il existe deux solutions pour transformer une association 11

Avec deux relations on traite lassociation 11 comme une association 1N puis lon ajoute une contrainte UNIQUE sur la cleacute eacutetrangegravere pour limiter la cardinaliteacute maximale agrave 1 Avec une seule relation on fusionne les deux classes en une seule relation

Association 11

Une des deux relations est choisie pour porter la cleacute eacutetrangegravere on ajoute les contraintes ou (cleacute candidate) sur la cleacute eacutetrangegravere et si neacutecessaire une UNIQUE KEY

contrainte imposant linstanciation simultaneacutee des deux relations

Classe1(abc=gtClasse2) avec c UNIQUE ou KEY

Classe2(cd)

ou

Classe1(ab)

Classe2(cda=gtClasse1) avec a UNIQUE ou KEY

On creacuteeacute une seule relation contenant lensemble des attributs des deux classes

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Meacutethode Avec deux relations (cleacute eacutetrangegravere)

Meacutethode Avec une relation (fusion)

Transformation des associations 1111

19

- -

- - - - - -

- on choisit une cleacute parmi les cleacutes candidates

Classe12(abcd) avec c UNIQUE ou KEY

ou

Classe21(cdab) avec a UNIQUE ou KEY

Ce choix entre les deux meacutethodes sera conduit par une appreacuteciation du rapport entre

La complexiteacute introduite par le fait davoir deux relations lagrave ou une suffitLa pertinence de la seacuteparation des deux relations dun point de vue seacutemantiqueLes pertes de performance dues agrave leacuteclatement des relationsLes pertes de performance dues au fait davoir une grande relationLes questions de seacutecuriteacute et de sucircreteacute factoriseacutees ou non au niveau des deux relations

Dans le cas dune association 1111 il faudra ajouter une contrainte compleacutementaire

Transformation des associations 1111 (cf p19)

32 Transformation des associations 1111

Le plus souvent cest meacutethode par des relations qui est la plus adapteacutee agrave ce casfusionLorsquelle ne lest pas et que lon choisit deux relations il faut ajouter une contrainte dynamique qui controcirclera que les deux relations sont bien toujours instancieacutees ensembles Notons que la cleacute eacutetrangegravere peut ecirctre choisie comme cleacute primaire

Association 11

Classe12(abcd) avec c KEY

ou

Classe21(cdab) avec a KEY

ou

Classe1(abc=gtClasse2) avec c KEY

Classe2(cd)

Contrainte PROJECTION(Classe1c) = PROJECTION(Classe2c)

ou

Classe1(ab)

Remarque Fusion des relations dans le cas de la traduction de lassociation 11

Compleacutement

Meacutethode Association 1111

Transformation des associations 0111

20

-

-

-

-

Classe2(cda=gtClasse1) avec a KEY

Contrainte PROJECTION(Classe1a) = PROJECTION(Classe2a)

La contrainte dynamique exprimeacutee ici suit le mecircme principe que pour les association 1NContrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p44)

33 Transformation des associations 0111

Le plus souvent cest la meacutethode par les deux relations qui est la plus adapteacutee on choisira toujours la relation cocircteacute 01 pour ecirctre reacutefeacuterenccedilante

Il est possible dutiliser la fusion dans ce cas les cleacutes cocircteacute 01 deviennent des attributs il ne UNIQUE

peuvent plus ecirctre cleacutes pouvant ecirctre NULL

Association 011

Classe1(abc=gtClasse2) avec c KEY

Classe2(cd)

ou

Classe12(cdab) avec a UNIQUE

34 Transformation des associations 0101

On choisit la solution avec deux relations dun cocircteacute ou de lautre la cleacute eacutetrangegravere est associeacute agrave la contrainte ce nest pas une cleacute car elle peut ecirctre nulleUNIQUE

Il nest pas souhaitable de choisir la fusion lune des deux relations pouvant ecirctre nulle on ne pourrait plus trouver de cleacute naturelle

Association 0101

Classe1(abc=gtClasse2) avec c UNIQUE

Classe2(cd)

ou

Compleacutement Contrainte dynamique

Meacutethode Association 0111

Meacutethode Association 0101

Exemple de choix pour une relation 11

21

-

- -

-

-

Classe1(ab)

Classe2(cda=gtClasse1) avec a UNIQUE

35 Exemple de choix pour une relation 11

Soit deux entiteacutes homme et femme et une association mariage de cardinaliteacute 1111 entre ces deux entiteacutes (hommes et femmes sont donc obligatoirement marieacutes)Les entiteacutes homme et femme sont identifieacutees par un attribut nom (dans ce modegravele chaque personne a un nom unique on pourrait remplacer le nom par un identifiant comme le numeacutero de seacutecuriteacute social ou par une cleacute artificielle pour ecirctre plus proche de la reacutealiteacute)

Bien que de type 1111 le choix de la fusion nest pas tregraves opportun car il sagit bien dobjets distincts que lon veut modeacuteliser

On choisira donc plutocirct la repreacutesentation avec deux relationsLa cleacute eacutetrangegravere pourra ecirctre du cocircteacute homme ou femme mecircme si la pratique dominante nous incite agrave la mettre du cocircteacute femmeOn pourra eacutegalement deacutecider de prendre la cleacute eacutetrangegravere comme cleacute primaire

1 homme (nom)2 femme (mariage=gthomme nom) avec nom KEY3 Contrainte PROJ(hommenom) = PROJ(femmemariage)

Si lassociation avait eacuteteacute de cardinaliteacute 0101 (certains hommes et femmes ne sont pas marieacutes) un choix similaire se serait imposeacute avec limpossibiliteacute de choisir la cleacute eacutetrangegravere comme cleacute primaire celle-ci pouvant ecirctre nulle et neacutetant donc plus candidate

1 homme (nom)2 femme (nom mariage=gthomme) avec mariage UNIQUE

4 Autres eacuteleacutements utiles en UML packages et steacutereacuteotypesObjectifs

Maicirctriser le diagramme de classe UML dans le cas de la conception de BD

41 Paquetages

Les paquetages (plus communeacutement appeleacutes ) sont des eacuteleacutements servant agrave organiser un modegravelepackage

Ils sont particuliegraverement utiles degraves que le modegravele comporte de nombreuses classes et que celles-ci peuvent ecirctre trieacutees selon plusieurs aspects structurants

Exemple

Exemple

Deacutefinition Package

homme (nom)

femme (mariage=gthomme nom) avec nom KEY

Contrainte PROJ(hommenom) = PROJ(femmemariage)

homme (nom)

femme (nom mariage=gthomme) avec mariage UNIQUE

Steacutereacuteotype

22

Notation des paquetages en UML

Exemple dutilisation des packages

On repreacutesente chaque classe au sein dun Il est alors possible de faire une preacutesentation globale du packagemodegravele (tous les ) partielle (une partie des ) ou centreacutee sur un seul packages packages package

Pour une repreacutesentation partielle ou centreacutee sur un on repreacutesente les concerneacutes avec leurs package packagesclasses propres ainsi que toutes les classes lieacutees des autres packages (et seulement celles-ci)

Preacutesentation partielle du modegravele centreacutee sur un package

Syntaxe

Exemple

Meacutethode

Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt

23

42 Steacutereacuteotype

Un steacutereacuteotype UML est une syntaxe permettant dajouter de la seacutemantique agrave la modeacutelisation des classes Il permet de deacutefinir des afin de regrouper conceptuellement un ensemble de classes (agrave linstar types de classedune classe qui permet de regrouper conceptuellement un ensemble dobjets)

Cest une meacutecanique de meacuteta-modeacutelisation elle permet deacutetendre le meacuteta-modegravele UML cest agrave dire le modegravele conceptuel du modegravele conceptuel

Un meacuteta-modegravele est le modegravele dun modegravele Par exemple le meacuteta-modegravele UML comprend les concepts de classe attribut association cardinaliteacute composition agreacutegation contraintes annotations On mobilise ces concepts (on les instancie) pour exprimer un modegravele particulier suivant le formalisme UML

Les steacutereacuteotypes permettent donc dajouter au meacuteta-modegravele UML standard celui que tout le monde utilise des concepts locaux pour enrichir le langage de modeacutelisation que lon utilise pour reacutealiser des modegraveles

Notation dun steacutereacuteotype en UML

Un steacutereacuteotype speacutecifique enrichit le meacuteta-modegravele UML mais selon une seacutemantique qui est propre agrave celui qui la poseacute non standard donc La conseacutequence est que pour un tiers linterpreacutetation du steacutereacuteotype nest plus normaliseacutee et sera potentiellement plus facilement erroneacutee Il convient donc de ne pas abuser de cette meacutecanique

Deux ou trois steacutereacuteotypes speacutecifiques correctement deacutefinis sont faciles agrave transmettre plusieurs dizaines repreacutesenteraient un nouveau langage complet agrave apprendre pour le lecteur du modegravele

Il existe des steacutereacuteotypes fournit en standard par UML ou communeacutement utiliseacutes par les modeacutelisateurs Lavantage est quil seront compris plus largement au mecircme titre que le reste du meacuteta-modegravele (ils ont une valeur de standard)

43 Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt

Deacutefinition Steacutereacuteotype UML

Deacutefinition Meacuteta-modegravele

Syntaxe

Conseil Steacutereacuteotypes speacutecifiques et steacutereacuteotypes standard

Syntaxe

Type utilisateurs steacutereacuteotype ltltdataTypegtgt

24

Steacutereacuteotype UML permettant dexprimer une eacutenumeacuteration

Exemple de modeacutelisation UML deacutenumeacuteration

44 Type utilisateurs steacutereacuteotype ltltdataTypegtgt

Les types utilisateurs permettent de deacutefinir des types complexes propres en extension des types primaires (entier chaicircne date)

Steacutereacuteotype dataType

Steacutereacuteotype dataType (exemple)

Cette modeacutelisation est eacutequivalente agrave la modeacutelisation des attributs composeacutes directement dans la classe principale Cest une repreacutesentation plus standard en UML

Exemple

Syntaxe

Exemple

Meacutethode Attributs composeacutes

Synthegravese sur la modalisation UML et relationnelle

25

Quelques eacuteleacutements de stylistique UML

26

-

- -

-

-

-

- - -

- - - -

1

2

3

5 Synthegravese sur la modalisation UML et relationnelle51 Quelques eacuteleacutements de stylistique UML

Toutes les associations doivent ecirctre nommeacutees (sauf composition heacuteritage agreacutegation)Ne pas utiliser de nom geacuteneacuterique pour les Classes comme Entiteacute Classe Objet TrucEacuteviter les noms geacuteneacuteriques pour les associations (comme est associeacute agrave)Attention au sens des compositions et agreacutegation le losange est cocircteacute ensemble et noubliez pas les cardinaliteacutes notamment cocircteacute parties

Nutilisez pas le souligneacute ni les en UML pour identifier les cleacutes preacutefeacuterez la contrainte keyPreacutefeacuterez lheacuteritage aux booleacuteens de typage en UMLLes attributs deacuteriveacutes sont reacuteserveacutes aux deacuterivations simples (des attributs de la mecircme classe) si cest plus complexe preacutefeacuterez des meacutethodes (et dans le doute preacutecisez les modes de calcul sur le scheacutema ou dans une note agrave part)Donnez des exemples de contenu lorsque ce nest pas eacutevident (lorsque le couple nom dattribut et type ne permet pas de faccedilon eacutevidente de comprendre de quoi lon parle)Inutile de deacuteclarer le type booleacuteen en UML utilisez-le directement comme un type de donneacutees connu

Si tous vos heacuteritages sont exclusifs notez-le agrave part pour alleacuteger votre scheacutema (et eacuteviter labondance de XOR)

52 Attention aux cleacutes artificielles

en UML on ne pose jamais de cleacutes artificiellesen relationnel on pose rarement des cleacute artificielles sauf dans le cas de cleacutes eacutetrangegraveres vraiment trop compliqueacuteesen SQL on peut poser des cleacutes artificielles si on a une bonne raison (ce nest donc pas systeacutematique et cest agrave justifier)

On najoutera pas de cleacute artificielle en UML au moment de la modeacutelisation conceptuelle des donneacutees

Formellement en UML la notion de cleacute nexiste pas (contrairement agrave l ) elle est ajouteacutee par les E-A

pratiquants des BD

Logiquement on a pas besoin de cette notion en UML les cleacutes artificielles servent en relationnel et dans certains cas uniquementPratiquement cela peut conduire agrave des situations absurdes (comme enlever au niveau logique des cleacutes artificielles ajouteacutees au niveau conceptuel)

Attention

Conseil

Compleacutement

Fondamental

Cleacutes artificielles et niveau conceptuel

Bibliographie commenteacutee sur la modeacutelisation UML

27

-

-

- -

-

- -

-

-

3

4

5

si on fait du non-relationnel on ne doit pas ajouter de cleacutes artificielles dans certains cas (limbrication typiquement) cela arrive mecircme en relationnel avec la transformation de lheacuteritage (dans certains cas toujours)

Meacutethodologiquement il faut se concentrer agrave chaque phase sur ce qui est important donc au moment du MCD on traduit les besoins on repegravere les contraintes explicites (cleacute uniciteacute non nulliteacute) sans se preacuteoccuper de ce qui sera rendu neacutecessaire par la suite par la modeacutelisation relationnelle (les cleacutes eacutetrangegraveres par exemple) ou limpleacutementation (loptimisation par exemple) Agrave chaque jour suffit sa peine Peacutedagogiquement enfin les deacutebutants ont tendance (agrave cause des environnements de conception graphique comme phpMyAdmin notamment) agrave systeacutematiser les cleacutes artificielles en SQL (on pourrait en discuter) mais eacutegalement agrave ne pas faire le travail de recherche des cleacutes naturelles (au niveau relationnel notamment ce qui est une faute de modeacutelisation) Donc au plus tard on fait intervenir les cleacutes artificielles au plus on a une chance de penser aux cleacutes naturelles

Soit le modegravele relationnel suivant

1 Etu (id numEtu) avec numEtu cleacute 2 UV (id codeUv) avec codeUv cleacute3 Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

La question qui permet dafficher la liste des eacutetudiants (numEtu) avec leurs UVs (codeUv) neacutecessite une jointure des cleacutes artificielles Un modegravele sans ces cleacutes artificielles aurait eacuteteacute plus performant pour agrave causereacutepondre agrave cette question puisque toutes les informations se trouvent dans la relation Inscriptions

1 Etu (numEtu) 2 UV (codeUv) 3 Inscriptions (uv=gtUV etu=gtEtu)

Ne soyez pas systeacutematiqueIl est en effet freacutequent dans un projet reacuteel dadopter des cleacutes artificielles presque systeacutematiquement vous pourrez le faire en connaissance de cause quand vous aurez bien compris pourquoi cest inteacuteressant et quand ccedila ne lest pasLes cleacutes artificielles sont inteacuteressantes pour autre chose que les performances (leacutevolutiviteacute par exemple choisissez-les quand vous savez pourquoi)Les cleacutes artificielles ne dispensent pas de rechercher les cleacutes naturelles Les cleacutes artificielles ne sont pas la seule faccedilon doptimiser une base de donneacutees (indexation deacutenormalisation)

53 Bibliographie commenteacutee sur la modeacutelisation UML

Il existe de nombreux outils de modeacutelisation UML On pourra citer

logiciel Open Source et multi-plateformes facile dusage (qui marche neacuteanmoins mieux sur Linux Dia

que sur Windows)

(version gratuite)Objecteering

Cleacutes artificielles et optimisation est-il toujours plus performant dutiliser des cleacutes artificielles

Conseil

Compleacutement Outils de modeacutelisation UML

Etu (id numEtu) avec numEtu cleacute

UV (id codeUv) avec codeUv cleacute

Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

Etu (numEtu)

UV (codeUv)

Inscriptions (uv=gtUV etu=gtEtu)

Bibliographie commenteacutee sur la modeacutelisation UML

28

- - - - - -

- - - - - -

Agrave voir eacutegalement en Open Source ou (non testeacute par lauteur)ArgoUML EclipseUML

UML2 en action

Pour un aperccedilu plus deacutetailleacute des possibiliteacutes dexpression du diagramme de classe UML lire le chapitre 7 Deacuteveloppement du modegravele statique (pages 133 agrave 163)

On pourra notamment y trouver

Lassociation dagreacutegationLes proprieacuteteacutes dassociationLexpression de rocircles dans les associationsLes attributs de classeLes qualificatifsLes opeacuterations (ou meacutethodes)

Le chapitre donne de plus des conseils meacutethodologiques pour la conception (voir en particulier la synthegravese page 163)

On pourra eacutegalement y trouver

Des principes de choix de modeacutelisation entre attributs et classes et sur la segmentation des classesDes principes de seacutelection des attributs (redondance avec les associations avec les classes etc)Des principes de seacutelection des associationsDes principes de choix de cardinaliteacute (notamment pour la gestion dhistorisation)Des principes de seacutelection des relations de geacuteneacuteralisation (heacuteritage)Des principes dintroduction de meacutetaclasses (type)s

U M L e n Franccedilais

Une tregraves bonne reacutefeacuterence en ligne sur la modeacutelisation UML avec des cours des liens vers la norme etc

Le contenu deacutepasse tregraves largement lusage dUML pour la modeacutelisation de BD (et ne fait dailleurs pas de reacutefeacuterence preacutecise agrave ce sous-ensemble particulier)

On pourra consulter en particulier le chapitre sur les diagrammes de classe httpumlfreefrcoursi-p14html

UML en 5 eacutetapes

On consultera en particulier le tutoriel sur les diagrammes de classe httpdeveloppeurjournaldunetcomtutorielcpt010607cpt_umlintroshtml

Cinq petits conseils pour un scheacutema UML efficace

Compleacutement Modeacutelisation UML

Compleacutement Reacutefeacuterence UML en ligne

Compleacutement Tutoriel sur la modeacutelisation UML

Compleacutement Conseils

Synthegravese Les diagrammes de modeacutelisation conceptuelle

29

-

-

- -

-

- -

-

-

- -

-

- - - -

-

-

(chapitre 3)UML2 par la pratique

Des explications exemples et eacutetudes de cas

54 Synthegravese Les diagrammes de modeacutelisation conceptuelle

Un modegravele conceptuel peut ecirctre repreacutesenteacute sous forme de diagramme E-A ou sous forme de diagramme de classe UML

Classe ou Entiteacute

Attribut ou Proprieacuteteacute

TypeacuteMulti-valueacuteComposeacuteDeacuteriveacute

Meacutethode

ParamegravetresValeur de retour

Association

Association

VerbeCardinaliteacute

Heacuteritage

Heacuteritage dattributsHeacuteritage de meacutethodes

Composition (ou entiteacute faible)

Cardinaliteacute

Compleacutement Pratique

Exercices

30

-

-

-

-

-

-

-

1 2

1

1 Exercice Lab III[20 min]

Description du problegraveme

Un laboratoire souhaite geacuterer les meacutedicaments quil conccediloit

Un meacutedicament est deacutecrit par un nom qui permet de lidentifier En effet il nexiste pas deux meacutedicaments avec le mecircme nom Un meacutedicament comporte une description courte en franccedilais ainsi quune description longue en latin On gegravere aussi le conditionnement du meacutedicament cest agrave dire le nombre de pilules par boicircte (qui est un nombre entier)Agrave chaque meacutedicament on associe une liste deacutedieacutee de contre-indications geacuteneacuteralement plusieurs parfois aucune Les contre-indications sont trieacutees par ordre dimportance Lordre est total est strict pour un meacutedicament donc chaque contre-indication possegravede une importance et il nexiste pas deux contre-indications associeacutees au mecircme meacutedicament avec la mecircme importanceTout meacutedicament possegravede au moins un composant souvent plusieurs Un composant est identifieacute par un code unique et possegravede un intituleacute Tout composant peut intervenir dans la fabrication de plusieurs meacutedicaments Il existe des composants qui ne sont pas utiliseacutes pour fabriquer des meacutedicaments et que lon veut quand mecircme geacuterer

Donneacutees de test

Afin de mateacuterialiser notre base de donneacutees nous obtenons les descriptions suivantes

Le a pour description courte et pour description longue Chourix Meacutedicament contre la chute des chouxlaquo raquoVivamus fermentum semper porta Nunc diam velit adipiscing ut tristique vitae sagittis vel odio laquo

Il est conditionneacute en boicircte de 13Maecenas convallis ullamcorper ultricies Curabitur ornare raquoSes contre-indications sont

Le Chourix ne doit jamais ecirctre pris apregraves minuitLe Chourix ne doit jamais ecirctre mis au contact avec de leau

Ses composants sont le et le HG79 SN50Le a pour description courte et pour Tropas Meacutedicament contre les dysfonctionnements intellectuelslaquo raquodescription longue Suspendisse lectus leo consectetur in tempor sit amet placerat quis neque Etiam laquo

Il est conditionneacute en boicircte de 42luctus porttitor lorem sed suscipit est rutrum non raquoSes contre-indications sont

Le Tropas doit ecirctre gardeacute agrave labri de la lumiegravere du soleil

Son unique composant est le HG79Les composants existants sont

HG79 Vif-argent alleacutegeacute

ExercicesII

Exercice Eacutetudiants et UVs (introduction)

31

- - -

- - HG81 Vif-argent alourdi

SN50 Pur eacutetain

Question 1

Question 2

Question 3

2 Exercice Eacutetudiants et UVs (introduction)[20 min]

On dispose du scheacutema UML ci-apregraves qui deacutecrit des eacutetudiants des UV les notes obtenues par les eacutetudiants agrave ces UV et les diplocircmes dorigine de ces eacutetudiants

Eacutetudiants et UVs

key deacutesigne des cleacutes candidates ici toutes les cleacutes ne sont composeacutees que dun seul attributlocal key deacutesigne une cleacute localeun semestre est de la forme PYYYY ou AYYYY (ougrave YYYY deacutesigneacute une anneacutee sur 4 chiffre) exemple A2013 P2014

Rappel Notion de cleacute locale dans classes dassociation (cf p49)

Effectuez le modegravele conceptuel en UML de ce problegraveme

Indices

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans deacutedieacuteeles donneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition

[ ]solution ndeg4 [ ] p56

En mobilisant les regravegles adeacutequates proposer un modegravele logique de donneacutees correspondant en relationnel Le repeacuterage des domaines et des cleacutes est obligatoire

[ ]solution ndeg5 [ ] p57

Dessiner des tableaux remplis avec les donneacutees fournies en exemple afin de montrer que le modegravele fonctionne selon le besoin exprimeacute initialement On pourra mettre le premier mot seulement des descriptions pour gagner du temps

[ ]solution ndeg6 [ ] p57

Exercice Super-heacuteros relationnels I

32

-

-

Question

3 Exercice Super-heacuteros relationnels I[20 min]

La gamme de super-heacuteros GARVEL veut reacutealiser la base de donneacutees de leurs figurines articuleacutees La socieacuteteacute a fait reacutealiser un modegravele UML qui doit servir de point de deacutepart agrave la mise en œuvre

Modegravele UML Figurines GARVEL

Question

4 Exercice Objets Numeacuteriques Libres[30 min]

Lassociation ONL (Objets Numeacuteriques Libres) est une association de promotion des logiciels libres Elle souhaite exposer sur un site Internet une liste de logiciels libres Ce site sera adosseacute agrave une base de donneacutees relationnelle ou relationnel-objet La premiegravere eacutetape de sa deacutemarche est de reacutealiser un modegravele conceptuel repreacutesentant ce quelle souhaite faire

La base de donneacutees permet de geacuterer des applicationsLes applications sont identifieacutees par leur nom (LibreOffice Gimp) et leur version (10 21) et comportent une description courte et une URL Tous les attributs sont obligatoires Chaque application a une URL uniqueLa base de donneacutees permet de geacuterer des librairies

Traduire le scheacutema en modegravele logique relationnel ( )MLD1

On choisira obligatoirement les cleacutes primaires parmi celles neacutecessitant le plus petit nombre de bits possible pour leur codage

[ ]solution ndeg7 [ ] p57

Transformer le modegravele UML en modegravele relationnel (justifier les passages non triviaux en particulier la relation dheacuteritage)

[ ]solution ndeg8 [ ] p58

Exercice Objets Numeacuteriques Libres

33

-

-

-

-

-

-

-

-

-

-

-

-

Les librairies sont des logiciels mais pas des applications Elles ont les mecircmes attributs que les applications (nom version description courte URL) mais les URL ne sont pas neacutecessairement uniques Les applications peuvent deacutependre de librairies ou dautres applications et les librairies peuvent deacutependre dautres librairies (mais pas dune application)La base de donneacutees permet de geacuterer des composantsLes composants sont inteacutegreacutes agrave une application ou librairie Les composants ont un code interne agrave lapplication ou la librairie quil servent une version et une description courte et une URL Le code et le numeacutero de version permettent didentifier localement le composant au sein de la librairie ou de lapplication la description courte et lURL sont optionnellesLa base de donneacutees permet de geacuterer des licencesLes applications librairies et composants sont attacheacutes agrave une ou plusieurs licences identifieacutees par leur nom (GPL MPL) leur version et leur langue et comportant le texte inteacutegral de la licence Les versions des logiciels et licences sont de type numeacutero de licence majeur point numeacutero de licence mineur comme 10 ou 22La base de donneacutees permet de geacuterer des cateacutegoriesChaque logiciel est rangeacute dans une cateacutegorie principale et plusieurs cateacutegories secondaires Exemple de cateacutegories bureautique dessin multimeacutedia physique

Exemple (factice) de donneacutees

Applications

Scenari 41 une chaicircne eacuteditoriale XML httpscenariorg deacutepend de Libreoffice 43 et de ImageMagick 68Libreoffice 43 une suite bureautique WYSIWYG httplibreofficeorg

Librairie

ImageMagick 68 permet de creacuteer de convertir de modifier et dafficher des images http imagemagickorg

Composant

impng 02 est un composant de ImageMagick 68 permet de compresser une image au format PNG

Toutes ces applications librairies et composants sont disponibles sous une licence LGPL 30 et GPL 30 franccedilaisesToutes ces applications et librairies sont rangeacutees dans la cateacutegorie principale document Scenari est rangeacute dans la cateacutegorie secondaire Eacutedition WYSIWYM Libreoffice dans la cateacutegorie secondaire Bureautique ImageMagick dans la cateacutegorie secondaire Multimeacutedia

Question

Reacutealiser un MCD en UML[ ]solution ndeg9 [ ] p58

Devoirs

34

1 Exercice Arbre de scegravene 3D[30 minutes]

On souhaite pouvoir geacuterer les diffeacuterents eacuteleacutements composant des scegravenes 3D dans une base de donneacutees Une scegravene contient des objets qui eux-mecircmes peuvent appartenir agrave plusieurs scegravenes (au moins une) mais il ne peut y avoir plusieurs fois le mecircme objet dans une mecircme scegravene Dans chaque scegravene les objets peuvent ecirctre visibles ou invisibles Les scegravenes et les objets sont identifieacutes de maniegravere unique par un nom Une scegravene peut ecirctre active ou inactive Un objet a comme proprieacuteteacute une position dans lespace repreacutesenteacutee par un vecteur de reacuteels agrave trois composantes (x y z) Les objets sont organiseacutes de maniegravere hieacuterarchique un objet peut ecirctre parent de plusieurs objets et chaque objet peut avoir au plus un parent Des scripts peuvent ecirctre associeacutes agrave un objet ou agrave une scegravene (agrave lun ou agrave lautre mais pas aux deux) Un script est identifieacute de maniegravere unique par un nom et possegravede eacutegalement un attribut permettant de connaicirctre son eacutetat (actif ou inactif) Un personnage est un objet particulier qui possegravede des animations Une animation est relative agrave un personnage et est identifieacutee de maniegravere locale par un nom Agrave un objet est associeacute un maillage et celui-ci peut ecirctre utiliseacute par plusieurs objets Un maillage est identifieacute de maniegravere unique par un nom et est composeacute de plusieurs eacuteleacutements Chaque eacuteleacutement est relatif agrave un maillage et est identifieacute de maniegravere locale par un numeacutero Il existe exactement trois types deacuteleacutement des nœuds des arrecirctes et des faces Une face est deacutelimiteacutee par trois arrecirctes et chaque arrecircte est deacutelimiteacutee par deux nœuds Plusieurs arrecirctes peuvent partager un mecircme nœud et plusieurs faces peuvent partager une mecircme arrecircte Afin deacutevaluer la complexiteacute dune scegravene on souhaite pouvoir calculer le nombre de faces afficheacutees pour une scegravene donneacutee (cest-agrave-dire la somme du nombre de faces du maillage associeacute aux objets visibles de la scegravene) Un maillage possegravede plusieurs mateacuteriaux identifieacutes de maniegravere unique par un nom Un mateacuteriau peut ecirctre associeacute agrave plusieurs maillages Un mateacuteriau est caracteacuteriseacute par une couleur deacutefinie par un vecteur dentiers agrave quatre composantes rouge vert bleu alpha Un mateacuteriau peut posseacuteder une texture et celle-ci peut ecirctre utiliseacutee par plusieurs mateacuteriaux Une texture est identifieacutee de maniegravere unique par un nom et possegravede comme attribut une image

Question 1

Question 2

DevoirsIII

Proposez une clarification de ce problegraveme On pourra reclasser les informations par grande cateacutegorie scegravene objets scripts

Eacutetablissez un modegravele conceptuel en UML de ce problegraveme

Compleacutement Exercices de modeacutelisation suppleacutementaire

35

1 Exercice Appartements agrave louer[30 min]

Une agence dimmobilier (ventes et locations) veut geacuterer son parc dappartements dans une base de donneacutees Chaque appartement possegravede plusieurs piegraveces qui peuvent ecirctre des piegraveces dhabitation des piegraveces de rangement ou des commoditeacutes

Chaque piegravece a une superficie un nombre de prises eacutelectriques et des meubles Pour ces derniers on veut enregistrer le nom du modegravele et le type (chaise lit four etc) Rien nempecircche quune piegravece comporte plusieurs meubles identiques (par exemple plusieurs chaises PIN IQUEA) Les piegraveces dhabitation ont une ou plusieurs fenecirctres les piegraveces de rangement ont une ou plusieurs eacutetagegraveres et une surface de rangement utile totale On veut aussi savoir dans quelles piegraveces de rangement se situent les tableaux eacutelectriques de lappartement Finalement les piegraveces commoditeacutes peuvent ecirctre de trois types cuisine toilette ou salle de bain

Lagence veut aussi enregistrer les portes entre les diffeacuterentes piegraveces Une porte peut ecirctre agrave simple battant double battant coulissante ou une simple ouverture

Chaque appartement a une adresse une superficie totale (qui est la somme des superficies des piegraveces) et un type qui est la lettre T suivie du nombre de piegraveces dhabitation de lappartement Pour un appartement donneacute chaque piegravece est identifieacutee par un numeacutero (commenccedilant au numeacutero 1)

Lagence veut eacutegalement enregistrer le quartier ougrave se trouve lappartement auquel est lieacute un prix par megravetre carreacute Finalement elle veut garder un historique de lhistoire de lappartement les peacuteriodes pour lesquelles il est libre occupeacute en travaux ou vendu

Question

2 Exercice Objectifs[40 min]

Vous prenez la preacutesidence de lassociation Objectifs dont lobjet est daider ses eacutetudiants membres agrave mener des projets dans le cadre de leurs eacutetudes

Compleacutement Exercices de modeacutelisation suppleacutementaire

IV

Reacutealisez le diagramme UML reacutepondant aux besoins de cette agence[ ]solution ndeg10 [ ] p59

Exercice Objectifs

36

- - -

-

-

- - -

Vous constatez en arrivant dans lassociation que personne ne sait exactement quels sont les projets en cours ni qui fait quoi dans les projets Vous ne parvenez pas non plus agrave obtenir une liste exacte des partenaires sur lesquels lassociation peut compter La seule chose sur laquelle vous parvenez agrave mettre la main est un fichier tableur vaguement agrave jour

Vous deacutecidez quil est plus que temps de mettre en place une base de donneacutees afin dassurer la bonne gestion des informations les plus importantes pour lassociation Vous vous attachez pour cela agrave reacutealiser une analyse des besoins

Analysez les documents ci-apregraves

Etat des projets

Eacutetat des projets de lassociation Objectifs

Recueil de besoins

Agrave partir de leacutetude du fonctionnement actuel de lassociation vous relevez les choses importantes agrave geacuterer suivantes

Les membres de lassociation geacuteneacuteralement identifieacutes par leur preacutenomLes projets geacutereacutes par lassociation avec des dates de deacutebut et de fin preacutecises et un chef de projetLe deacutetail des tacircches de chaque projet avec leurs dates de deacutebut et de fin aussi et la liste de tous les membres qui y participentLa liste des partenaires des projets avec leur rocircle preacutecis pour chacun des projets auxquels ils participent

Afin de mieux geacuterer les attributions des projets il serait eacutegalement inteacuteressant de creacuteer une liste des speacutecialiteacutes correspondant agrave ce qui ce fait dans lassociation et daffecter une speacutecialiteacute agrave chaque membre ainsi quune agrave chaque projet pour voir si ce sont bien les membres les mieux adapteacutes qui travaille sur les projets

Recueil de donneacutees

Les discussions avec les anciens membres de lassociation vous apprennent les choses suivantes

Lassociation a termineacute de geacuterer les trois projets Comeacutedie Musicale geacutereacutee par Nathalie sur les trois premiers mois du semestre dautomne 1001 Science en fecircte geacutereacutee par Pierre sur tout le semestre de printemps 1003 et Nuit du picolo geacutereacutee par Julien en novembre 1001Les speacutecialiteacutes recenseacutees pour le moment sont Ville Universiteacute Sport Entreprise Culture InternationalIl faut au moins dix membres agrave lassociation (sinon elle ferme) recruter ceux qui manquentAidez lassociation agrave diviser ses projets en tacircches

Exercice Objectifs

37

- Les partenaires suivants aident ou ont aideacute lassociation la mairie pour la comeacutedie musicale et la science en fecircte qui apporte un soutien financier le ministegravere de la culture qui apporte son soutien logistique agrave la science en fecircte lassociation des commerccedilants de la ville qui apporte son soutien publicitaire agrave la comeacutedie musicale 1664 qui offre ses biegraveres agrave moitieacute prix pour la nuit du Picolo

Question 1

Question 2

Question 3

Afin de preacuteparer une analyse des besoins sommaire listez les donneacutees que vous devrez geacuterer agrave laide des documents et recueils de discussion agrave votre disposition Faites des hypothegraveses lorsque les donneacutees sont incomplegravetes ou incoheacuterentes

[ ]solution ndeg11 [ ] p59

Reacutealiser le MCD en UML et en E-A agrave partir des donneacutees preacutepareacutees dans la question preacuteceacutedente[ ]solution ndeg12 [ ] p60

Reacutealiser le MLD en relationnel en traduisant votre MCD[ ]solution ndeg13 [ ] p61

Contenus annexes

38Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

- - -

gt Attributs

Un attribut est une information eacuteleacutementaire qui caracteacuterise une classe et dont la valeur deacutepend de lobjet instancieacute

Le domaine des valeurs que peut prendre lattribut est fixeacute a prioriUn attribut est typeacute

Il peut prendre plusieurs valeurs distinctes dans son domaineUn attribut peut ecirctre multivalueacute Sa valeur alors est une fonction sur dautres attributs de la classeUn attribut peut ecirctre deacuteriveacute

(ou composite) Il joue alors le rocircle dun groupe dattributs (par Un attribut peut ecirctre composeacuteexemple une adresse peut ecirctre un attribut composeacute des attributs numeacutero type de voie nom de la voie) Cette notion renvoie agrave la notion de variable de type dans les langages de Record

programmation classiques

En UML on preacutefegravere lusage de meacutethodes aux attributs deacuteriveacutes On utilisera toujours des meacutethodes degraves que la valeur de lattribut deacuteriveacute deacutepend dautres attributs exteacuterieurs agrave sa classeEn UML on preacutefegravere lusage de compositions aux attributs composeacutes On utilisera toujours des compositions pour les attributs composeacutes et multivalueacutes

1 attributtype2 attribut_multivalueacute[nbMinValeursnbMaxValeurs]type3 attribut_deacuteriveacutetype4 attribut_composeacute5   - sous-attribut1type6   - sous-attribut2type7   -

Contenus annexes

Deacutefinition Attribut

Attention On utilise peu les attributs deacuteriveacutes et composeacutes en UML

Syntaxe

attributtype

attribut_multivalueacute[nbMinValeursnbMaxValeurs]type

attribut_deacuteriveacutetype

attribut_composeacute

  - sous-attribut1type

  - sous-attribut2type

  -

Contenus annexes

39Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Repreacutesentation dattributs en UML

Dans cet exemple les attributs Nom Preacutenom sont de type lun de 20 caractegraveres et lautre de 10 stringtandis que DateNaissance est de type et Age de type Preacutenom est un attribut multivalueacute ici date integerune personne peut avoir de 1 agrave 3 preacutenoms Age est un attribut deacuteriveacute il est calculeacute par une fonction sur DateNaissance

Meacutethodes (cf p39)

Composition (cf p5)

gt Meacutethodes

Une meacutethode (ou opeacuteration) est une fonction associeacutee agrave une classe dobjet qui permet dagir sur les objets de la classe ou qui permet agrave ces objets de renvoyer des valeurs (calculeacutees en fonction de paramegravetres)

1 methode(paramegravetres)type

Pour la modeacutelisation des bases de donneacutees les meacutethodes sont surtout utiliseacutees pour repreacutesenter des donneacutees calculeacutees (agrave linstar des attributs deacuteriveacutees) ou pour mettre en exergue des fonctions importantes du systegraveme cible Seules les meacutethodes les plus importantes sont repreacutesenteacutees lapproche est moins systeacutematique quen modeacutelisation objet par exemple

Lors de la transformation du modegravele conceptuel UML en modegravele logique relationnel les meacutethodes ne Leur repeacuterage au niveau conceptuel sert donc surtout daide-seront geacuteneacuteralement pas impleacutementeacutees

meacutemoire pour limpleacutementation au niveau applicatif

Exemple La classe Personne

Compleacutement Voir aussi

Deacutefinition Meacutethode

Syntaxe

Remarque Meacutethodes et modeacutelisation de BD

Remarque Meacutethodes relationnel relationnel-objet

methode(paramegravetres)type

Contenus annexes

40Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Au contraire un modegravele logique relationnel-objet permettra limpleacutementation de meacutethodes directement associeacutees agrave des tables Leur repeacuterage au niveau conceptuel est donc encore plus important

Transformation des meacutethodes par des vues (cf p40)

gt Transformation des meacutethodes par des vues

Lorsquune meacutethode est speacutecifieacutee sur un diagramme UML pour une classe C si cette meacutethode est une fonction relationnelle (elle renvoie une unique valeur et elle peut ecirctre reacutesolue par une requecircte SQL) alors on creacutee une vue qui reprend les attributs de la classe C et ajoute des colonnes calculeacutees pour les meacutethodes

Les attributs deacuteriveacutes eacutetant apparenteacutes agrave des meacutethodes ils peuvent eacutegalement ecirctre geacutereacutes par des vues

gt Classe dassociation

On utilise la notation des classes dassociation lorsque lon souhaite ajouter des proprieacuteteacutes agrave une association

Notation dune classe dassociation en UML

On reacuteserve en geacuteneacuteral les classes dassociation aux associations NM

Il est toujours possible de reacuteduire une classe dassociation sur une association 1N en migrant ses attributs sur la classe cocircteacute N et cest en geacuteneacuteral plus lisible ainsi

Compleacutement

Meacutethode

Remarque Attributs deacuteriveacutes

Deacutefinition Classe dassociation

Syntaxe Notation dune classe dassociation en UML

Meacutethode

Contenus annexes

41Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

-

Emplois

Selon le standard UML une classe dassociation est une classe et agrave ce titre elle peut ecirctre mobiliseacutee dans dautres associations ou dans des heacuteritages Nous deacuteconseillons neacuteanmoins ces notations qui ont tendance agrave complexifier la lecture et la transformation du diagramme

Nous conseillons donc de ne jamais associer une classe dassociation

gt Transformation des attributs

Pour chaque attribut eacuteleacutementaire et monovalueacute dune classe

on creacutee un attribut correspondant

Attribut

Classe1(ab)

Pour chaque attribut composite comprenant N sous-attributs dune classe

on creacutee N attributs correspondantsdont les noms sont la concateacutenation du nom de lattribut composite avec celui du sous-attribut

Exemple Exemple de classe dassociation

Conseil

Meacutethode Attributs simples

Meacutethode Attributs composites

Contenus annexes

42Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- - - -

Attribut composeacute

Classe1(ab_b1b_b2)

Pour chaque attribut multivalueacute b dune classe C

on creacutee une nouvelle relation RBqui comprend un attribut monovalueacute correspondant agrave bplus la cleacute de la relation repreacutesentant C la cleacute de RB est la concateacutenation des deux attributs

Attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Dans le cas ougrave le nombre maximum de est fini et petit on peut eacutegalement adopter la transformation b

suivante Classe1(ab1b2b3b4b5b6b7b8b9b10)

Si le nombre dattributs est infini ( ) cest impossible sil est trop grand ce nest pas souhaitableb[1]

On combine les regravegles eacutenonceacutees pour les attributs composeacutes et pour les attributs multivalueacutes

Attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Transformation des compositions (cf p42)

Meacutethode Attributs multivalueacutes

Meacutethode Attributs multivalueacutes (meacutethode alternative)

Meacutethode Attributs composeacutes multivalueacutes

Rappel Voir aussi

Contenus annexes

43Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

gt Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Compleacutement Attributs multivalueacutes et composeacutes

Contenus annexes

44Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

Rappel Voir aussi

Rappel

Meacutethode

Contenus annexes

45Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p48)

gt Transformation des associations 1N

Pour chaque association binaire de type 1N

on ajoute agrave la relation cocircteacute N une cleacute eacutetrangegravere vers la relation cocircteacute 1

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Meacutethode

Contenus annexes

46Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Association 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Contrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p46)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

R1

Compleacutement

Rappel

Meacutethode

Contenus annexes

47Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p47)

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Deacutefinition Projection

Contenus annexes

48Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Deacutefinition Projection

Contenus annexes

49Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Transformation des classes dassociation

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de lassociation NM

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Meacutethode Classe dassociation NM

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Cours

5

-

-

1 Modeacutelisation avanceacutee des associations en UMLObjectifs

Maicirctriser le diagramme de classe UML dans le cas de la conception de BD

11 Exercice Entreprise

12 Composition

On appelle composition une association particuliegravere qui possegravede les proprieacuteteacutes suivantes

La composition associe une classe composite et des classes parties tel que tout objet partie appartient agrave un et un seul objet composite Cest donc une association 1N (voire 11)La composition nest pas partageable donc un objet partie ne peut appartenir quagrave un seul objet composite agrave la fois

CoursI

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

[ ]solution ndeg1 [ ] p53

Deacutefinition Association de composition

Composition

6

- -

-

- -

- Le cycle de vie des objets parties est lieacute agrave celui de lobjet composite donc un objet partie disparaicirct quand lobjet composite auquel il est associeacute disparaicirct

La composition est une association particuliegravere (binaire de cardinaliteacute contrainte)La composition nest pas symeacutetrique une classe joue le rocircle de conteneur pour les classes lieacutees elle prend donc un rocircle particulier a prioriLa composition est une agreacutegation avec des contraintes suppleacutementaires (non partageabiliteacute et cycle de vie lieacute)

Notation de la composition en UML

La cardinaliteacute cocircteacute composite est toujours de exactement 1

Cocircteacute partie la cardinaliteacute est libre elle peut ecirctre 01 1 ou bien 1

Un livre

On voit bien ici quun chapitre na de sens que faisant partie dun livre quil ne peut exister dans deux livres diffeacuterents et que si le livre nexiste plus les chapitres le composant non plus

La composition permet dexprimer une association analogue agrave celle qui relie une entiteacute faible agrave une entiteacute

identifiante en modeacutelisation Lentiteacute de type faible correspond agrave un objet partie et lentiteacute identifiante agrave E-A

un objet composite

Une composition avec une classe partie doteacutee dun seul attribut peut seacutecrire avec un attribut multivalueacuteUn attribut composeacute et multivalueacute peut seacutecrire avec une composition

Remarque

Syntaxe Notation dune composition en UML

Attention Composition et cardinaliteacute

Exemple Exemple de composition

Remarque Composition et entiteacutes faibles

Conseil Composition et attribut multivalueacute

Agreacutegation

7

- - Attributs (cf p38)

Agreacutegation (cf p7)

13 Agreacutegation

Lagreacutegation est une association particuliegravere utiliseacutee pour preacuteciser une relation toutpartie (ou ensembleeacuteleacutement) on parle dassociation meacutereacuteologique

Notation de lagreacutegation en UML

La cardinaliteacute peut ecirctre exprimeacutee librement en particulier les instances de la classe Eacuteleacutement peuvent ecirctre associeacutees agrave plusieurs instances de la classe Ensemble et mecircme de plusieurs classes

Lagreacutegation garde toutes les proprieacuteteacutes dune association classique (cardinaliteacute cycle de vie etc) elle ajoute simplement une terminologie un plus preacutecise via la notion de toutpartie

14 Explicitation des associations (sens de lecture et rocircle)

Il est possible dajouter le sens de lecture du verbe caracteacuterisant lassociation sur un diagramme de classe UML afin den faciliter la lecture On ajoute pour cela un signe ou (ou un triangle noir) agrave cocircteacute du nom de lt gt

lassociation

Il est possible de preacuteciser le rocircle joueacute par une ou plusieurs des classes composant une association afin den faciliter la compreacutehension On ajoute pour cela ce rocircle agrave cocircteacute de la classe concerneacutee (parfois dans un petit encadreacute colleacute au trait de lassociation

Rocircle et sens de lecture sur une association

Rappel Voir aussi

Deacutefinition Association dagreacutegation

Syntaxe

Attention

Syntaxe Sens de lecture

Syntaxe Rocircle

Exemple

Notion de cleacute locale dans les compositions et les associations NM

8

- - -

15 Associations reacuteflexives

Une association reacuteflexive est une association qui associe une classe avec elle-mecircme

Association reacuteflexive laquo ami raquo

Lexplicitation des associations est souvent utile dans le cas des associations reacuteflexives non symeacutetrique (ou chaque objet ne joue pas le mecircme rocircle)

Une instance peut ecirctre associeacutee avec elle-mecircme dans le cas de dune association reacuteflexive

Si lon souhaite exprimer le contraire (une instance peut ecirctre associeacutee avec dautres instances de la mecircme classe mais pas avec elle-mecircme)

on ajoute une contrainte en UML (par exemple les personnes ne se marient pas avec elles-mecircmes) que lon traduira en relationnel par une contrainte du type AVEC pk fk

que lon traduira en SQL par une clause du type CHECK pk = fk

16 Notion de cleacute locale dans les compositions et les associations NM

Le concept de cleacute locale appartient au niveau conceptuel il est heacuteriteacute de lentiteacute faible du modegravele conceptuel Entiteacute-Association (eacutequivalent de la composition en UML) Dans une entiteacute faible ou une composition une cleacute de la classe composant est dite locale car elle ne permet didentifier lobjet que si lon connaicirct la classe composite

Dans certaines constructions en UML (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Deacutefinition Association reacuteflexive

Exemple

Meacutethode

Attention Auto-association dans les associations reacuteflexives

Deacutefinition

Attention

Classe dassociation avec cleacute locale

9

Dans une associations NM on peut avoir des (vraies) cleacutes ou des cleacutes locales En revanche dans une composition on na que des cleacutes locales en effet si le composant est identifiable indeacutependamment de son composite cest en geacuteneacuteral quil a une vie propre et donc que lon est pas en preacutesence dune composition

17 Classe dassociation avec cleacute locale

Classe dassociation (cf p40)

Dans lexemple suivant chaque personne peut avoir un emploi dans plusieurs socieacuteteacutes mais elle ne peut pas avoir plusieurs emplois dans une mecircme socieacuteteacute

Emplois

La transformation en relationnelle est coheacuterente avec cette contrainte

1 Socieacuteteacute()2 Personne()3 Emploi(personne=gtPersonne societe=gtSociete postestring salaireinteger quotitenumeric(12))

La speacutecification dune cleacute locale dans emploi par exemple ici le poste permet de lever cette contrainte lorsquon le souhaite en permettant didentifier chaque instance de lassociation ici lemploi dune personne par sa socieacuteteacute

Attention

Rappel

Contrainte inheacuterente agrave la relation NM

Meacutethode Inteacuterecirct de la cleacute locale

Socieacuteteacute()

Personne()

Emploi(personne=gtPersonne societe=gtSociete postestring salaireinteger

quotitenumeric(12))

Associations ternaires

10

La transformation en relationnelle permettra de maintenir la modeacutelisation en ajoutant la cleacute locale agrave la cleacute initiale

1 Socieacuteteacute()2 Personne()3 Emploi(personne=gtPersonne societe=gtSociete postestring salaireinteger quotitenumeric(72))

18 Associations ternaires

Notation dune association ternaire

Il est toujours possible de reacuteeacutecrire une association ternaire avec trois associations binaires en transformant lassociation en classe

Syntaxe

Conseil Ne pas abuser des associations ternaires

Socieacuteteacute()

Personne()

Emploi(personne=gtPersonne societe=gtSociete postestring salaireinteger

quotitenumeric(72))

Passage UML-Relationnel Associations avanceacutees

11

En pratique on nutilise jamais en UML dassociation de degreacute supeacuterieur agrave 3

2 Passage UML-Relationnel Associations avanceacuteesObjectifs

Savoir faire le passage dun scheacutema conceptuel UML agrave un scheacutema relationnel dans tous les cas

Reconnaicirctre les cas de transformation qui se traitent toujours de la mecircme faccedilon et ceux qui neacutecessite une modeacutelisation compleacutementaire

21 Trousseau de cleacutes

En UML et en relationnel il existe plusieurs termes mobilisant le mot laquo cleacute raquo le seul concept qui est commun est le concept de Tous les autres sont speacutecifiques au niveau conceptuel ou relationnelcleacute

Cleacute (key)

Cleacute locale (local key)

Cleacute (key)

Cleacute candidate (candidate key)

Cleacute primaire (primary key) et Cleacute alternative (alternate key)

Cleacute artificielle (surrogate key) et Cleacute naturelle (natural key business key)

Cleacute eacutetrangegravere (foreign key)

Conseil Pas de degreacute supeacuterieur agrave 3

Attention

Rappel Concept commun au niveau UML et relationnel

Rappel Concept speacutecifique au niveau UML

Rappel Concepts speacutecifiques au niveau relationnel

Transformation des compositions

12

- -

Deacutefinition des cleacutes en relationnel

22 Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Transformation des agreacutegations

13

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

23 Transformation des agreacutegations

Les associations de type agreacutegation se traitent de la mecircme faccedilon que les associations classiques

Agreacutegation 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Compleacutement Attributs multivalueacutes et composeacutes

Rappel Voir aussi

Rappel Agreacutegation

Transformation des classes dassociation avec cleacute locale

14

- -

Agreacutegation NM

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2)

24 Transformation des classes dassociation avec cleacute locale

Les attributs de la classe dassociation

sont ajouteacutes agrave la relation issue de lassociation NM la cleacute locale de la classe dassociation est concateacuteneacutee aux cleacutes eacutetrangegraveres composant deacutejagrave la cleacute primaire de la relation dassociation

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Meacutethode Classe dassociation NM

Exercice

15

25 Correspondance entre UML et relationnel

Passsage UML vers Relationnel

Exercice

16

26 ExerciceQuel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

[ ]solution ndeg2 [ ] p53

Exercice

17

27 ExerciceSoit le scheacutema UML suivant

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

[ ]solution ndeg3 [ ] p54

Modeacutelisation avanceacutee des associations 11 en relationnel

18

-

- -

-

-

3 Modeacutelisation avanceacutee des associations 11 en relationnelObjectifs

Savoir faire le passage dun scheacutema conceptuel UML agrave un scheacutema relationnel

Connaicirctre les choix possibles pour le cas de lassociation 11 et savoir faire le meilleur choix

Il existe des formulations conceptuelles en UML qui sont plus deacutelicates agrave traduire au niveau logique en relationnel comme lassociation 11 Ces cas requiegraverent un choix eacuteclaireacute de la part du concepteur

31 Transformation des associations 11 (approche geacuteneacuterale)

Il existe deux solutions pour transformer une association 11

Avec deux relations on traite lassociation 11 comme une association 1N puis lon ajoute une contrainte UNIQUE sur la cleacute eacutetrangegravere pour limiter la cardinaliteacute maximale agrave 1 Avec une seule relation on fusionne les deux classes en une seule relation

Association 11

Une des deux relations est choisie pour porter la cleacute eacutetrangegravere on ajoute les contraintes ou (cleacute candidate) sur la cleacute eacutetrangegravere et si neacutecessaire une UNIQUE KEY

contrainte imposant linstanciation simultaneacutee des deux relations

Classe1(abc=gtClasse2) avec c UNIQUE ou KEY

Classe2(cd)

ou

Classe1(ab)

Classe2(cda=gtClasse1) avec a UNIQUE ou KEY

On creacuteeacute une seule relation contenant lensemble des attributs des deux classes

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Meacutethode Avec deux relations (cleacute eacutetrangegravere)

Meacutethode Avec une relation (fusion)

Transformation des associations 1111

19

- -

- - - - - -

- on choisit une cleacute parmi les cleacutes candidates

Classe12(abcd) avec c UNIQUE ou KEY

ou

Classe21(cdab) avec a UNIQUE ou KEY

Ce choix entre les deux meacutethodes sera conduit par une appreacuteciation du rapport entre

La complexiteacute introduite par le fait davoir deux relations lagrave ou une suffitLa pertinence de la seacuteparation des deux relations dun point de vue seacutemantiqueLes pertes de performance dues agrave leacuteclatement des relationsLes pertes de performance dues au fait davoir une grande relationLes questions de seacutecuriteacute et de sucircreteacute factoriseacutees ou non au niveau des deux relations

Dans le cas dune association 1111 il faudra ajouter une contrainte compleacutementaire

Transformation des associations 1111 (cf p19)

32 Transformation des associations 1111

Le plus souvent cest meacutethode par des relations qui est la plus adapteacutee agrave ce casfusionLorsquelle ne lest pas et que lon choisit deux relations il faut ajouter une contrainte dynamique qui controcirclera que les deux relations sont bien toujours instancieacutees ensembles Notons que la cleacute eacutetrangegravere peut ecirctre choisie comme cleacute primaire

Association 11

Classe12(abcd) avec c KEY

ou

Classe21(cdab) avec a KEY

ou

Classe1(abc=gtClasse2) avec c KEY

Classe2(cd)

Contrainte PROJECTION(Classe1c) = PROJECTION(Classe2c)

ou

Classe1(ab)

Remarque Fusion des relations dans le cas de la traduction de lassociation 11

Compleacutement

Meacutethode Association 1111

Transformation des associations 0111

20

-

-

-

-

Classe2(cda=gtClasse1) avec a KEY

Contrainte PROJECTION(Classe1a) = PROJECTION(Classe2a)

La contrainte dynamique exprimeacutee ici suit le mecircme principe que pour les association 1NContrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p44)

33 Transformation des associations 0111

Le plus souvent cest la meacutethode par les deux relations qui est la plus adapteacutee on choisira toujours la relation cocircteacute 01 pour ecirctre reacutefeacuterenccedilante

Il est possible dutiliser la fusion dans ce cas les cleacutes cocircteacute 01 deviennent des attributs il ne UNIQUE

peuvent plus ecirctre cleacutes pouvant ecirctre NULL

Association 011

Classe1(abc=gtClasse2) avec c KEY

Classe2(cd)

ou

Classe12(cdab) avec a UNIQUE

34 Transformation des associations 0101

On choisit la solution avec deux relations dun cocircteacute ou de lautre la cleacute eacutetrangegravere est associeacute agrave la contrainte ce nest pas une cleacute car elle peut ecirctre nulleUNIQUE

Il nest pas souhaitable de choisir la fusion lune des deux relations pouvant ecirctre nulle on ne pourrait plus trouver de cleacute naturelle

Association 0101

Classe1(abc=gtClasse2) avec c UNIQUE

Classe2(cd)

ou

Compleacutement Contrainte dynamique

Meacutethode Association 0111

Meacutethode Association 0101

Exemple de choix pour une relation 11

21

-

- -

-

-

Classe1(ab)

Classe2(cda=gtClasse1) avec a UNIQUE

35 Exemple de choix pour une relation 11

Soit deux entiteacutes homme et femme et une association mariage de cardinaliteacute 1111 entre ces deux entiteacutes (hommes et femmes sont donc obligatoirement marieacutes)Les entiteacutes homme et femme sont identifieacutees par un attribut nom (dans ce modegravele chaque personne a un nom unique on pourrait remplacer le nom par un identifiant comme le numeacutero de seacutecuriteacute social ou par une cleacute artificielle pour ecirctre plus proche de la reacutealiteacute)

Bien que de type 1111 le choix de la fusion nest pas tregraves opportun car il sagit bien dobjets distincts que lon veut modeacuteliser

On choisira donc plutocirct la repreacutesentation avec deux relationsLa cleacute eacutetrangegravere pourra ecirctre du cocircteacute homme ou femme mecircme si la pratique dominante nous incite agrave la mettre du cocircteacute femmeOn pourra eacutegalement deacutecider de prendre la cleacute eacutetrangegravere comme cleacute primaire

1 homme (nom)2 femme (mariage=gthomme nom) avec nom KEY3 Contrainte PROJ(hommenom) = PROJ(femmemariage)

Si lassociation avait eacuteteacute de cardinaliteacute 0101 (certains hommes et femmes ne sont pas marieacutes) un choix similaire se serait imposeacute avec limpossibiliteacute de choisir la cleacute eacutetrangegravere comme cleacute primaire celle-ci pouvant ecirctre nulle et neacutetant donc plus candidate

1 homme (nom)2 femme (nom mariage=gthomme) avec mariage UNIQUE

4 Autres eacuteleacutements utiles en UML packages et steacutereacuteotypesObjectifs

Maicirctriser le diagramme de classe UML dans le cas de la conception de BD

41 Paquetages

Les paquetages (plus communeacutement appeleacutes ) sont des eacuteleacutements servant agrave organiser un modegravelepackage

Ils sont particuliegraverement utiles degraves que le modegravele comporte de nombreuses classes et que celles-ci peuvent ecirctre trieacutees selon plusieurs aspects structurants

Exemple

Exemple

Deacutefinition Package

homme (nom)

femme (mariage=gthomme nom) avec nom KEY

Contrainte PROJ(hommenom) = PROJ(femmemariage)

homme (nom)

femme (nom mariage=gthomme) avec mariage UNIQUE

Steacutereacuteotype

22

Notation des paquetages en UML

Exemple dutilisation des packages

On repreacutesente chaque classe au sein dun Il est alors possible de faire une preacutesentation globale du packagemodegravele (tous les ) partielle (une partie des ) ou centreacutee sur un seul packages packages package

Pour une repreacutesentation partielle ou centreacutee sur un on repreacutesente les concerneacutes avec leurs package packagesclasses propres ainsi que toutes les classes lieacutees des autres packages (et seulement celles-ci)

Preacutesentation partielle du modegravele centreacutee sur un package

Syntaxe

Exemple

Meacutethode

Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt

23

42 Steacutereacuteotype

Un steacutereacuteotype UML est une syntaxe permettant dajouter de la seacutemantique agrave la modeacutelisation des classes Il permet de deacutefinir des afin de regrouper conceptuellement un ensemble de classes (agrave linstar types de classedune classe qui permet de regrouper conceptuellement un ensemble dobjets)

Cest une meacutecanique de meacuteta-modeacutelisation elle permet deacutetendre le meacuteta-modegravele UML cest agrave dire le modegravele conceptuel du modegravele conceptuel

Un meacuteta-modegravele est le modegravele dun modegravele Par exemple le meacuteta-modegravele UML comprend les concepts de classe attribut association cardinaliteacute composition agreacutegation contraintes annotations On mobilise ces concepts (on les instancie) pour exprimer un modegravele particulier suivant le formalisme UML

Les steacutereacuteotypes permettent donc dajouter au meacuteta-modegravele UML standard celui que tout le monde utilise des concepts locaux pour enrichir le langage de modeacutelisation que lon utilise pour reacutealiser des modegraveles

Notation dun steacutereacuteotype en UML

Un steacutereacuteotype speacutecifique enrichit le meacuteta-modegravele UML mais selon une seacutemantique qui est propre agrave celui qui la poseacute non standard donc La conseacutequence est que pour un tiers linterpreacutetation du steacutereacuteotype nest plus normaliseacutee et sera potentiellement plus facilement erroneacutee Il convient donc de ne pas abuser de cette meacutecanique

Deux ou trois steacutereacuteotypes speacutecifiques correctement deacutefinis sont faciles agrave transmettre plusieurs dizaines repreacutesenteraient un nouveau langage complet agrave apprendre pour le lecteur du modegravele

Il existe des steacutereacuteotypes fournit en standard par UML ou communeacutement utiliseacutes par les modeacutelisateurs Lavantage est quil seront compris plus largement au mecircme titre que le reste du meacuteta-modegravele (ils ont une valeur de standard)

43 Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt

Deacutefinition Steacutereacuteotype UML

Deacutefinition Meacuteta-modegravele

Syntaxe

Conseil Steacutereacuteotypes speacutecifiques et steacutereacuteotypes standard

Syntaxe

Type utilisateurs steacutereacuteotype ltltdataTypegtgt

24

Steacutereacuteotype UML permettant dexprimer une eacutenumeacuteration

Exemple de modeacutelisation UML deacutenumeacuteration

44 Type utilisateurs steacutereacuteotype ltltdataTypegtgt

Les types utilisateurs permettent de deacutefinir des types complexes propres en extension des types primaires (entier chaicircne date)

Steacutereacuteotype dataType

Steacutereacuteotype dataType (exemple)

Cette modeacutelisation est eacutequivalente agrave la modeacutelisation des attributs composeacutes directement dans la classe principale Cest une repreacutesentation plus standard en UML

Exemple

Syntaxe

Exemple

Meacutethode Attributs composeacutes

Synthegravese sur la modalisation UML et relationnelle

25

Quelques eacuteleacutements de stylistique UML

26

-

- -

-

-

-

- - -

- - - -

1

2

3

5 Synthegravese sur la modalisation UML et relationnelle51 Quelques eacuteleacutements de stylistique UML

Toutes les associations doivent ecirctre nommeacutees (sauf composition heacuteritage agreacutegation)Ne pas utiliser de nom geacuteneacuterique pour les Classes comme Entiteacute Classe Objet TrucEacuteviter les noms geacuteneacuteriques pour les associations (comme est associeacute agrave)Attention au sens des compositions et agreacutegation le losange est cocircteacute ensemble et noubliez pas les cardinaliteacutes notamment cocircteacute parties

Nutilisez pas le souligneacute ni les en UML pour identifier les cleacutes preacutefeacuterez la contrainte keyPreacutefeacuterez lheacuteritage aux booleacuteens de typage en UMLLes attributs deacuteriveacutes sont reacuteserveacutes aux deacuterivations simples (des attributs de la mecircme classe) si cest plus complexe preacutefeacuterez des meacutethodes (et dans le doute preacutecisez les modes de calcul sur le scheacutema ou dans une note agrave part)Donnez des exemples de contenu lorsque ce nest pas eacutevident (lorsque le couple nom dattribut et type ne permet pas de faccedilon eacutevidente de comprendre de quoi lon parle)Inutile de deacuteclarer le type booleacuteen en UML utilisez-le directement comme un type de donneacutees connu

Si tous vos heacuteritages sont exclusifs notez-le agrave part pour alleacuteger votre scheacutema (et eacuteviter labondance de XOR)

52 Attention aux cleacutes artificielles

en UML on ne pose jamais de cleacutes artificiellesen relationnel on pose rarement des cleacute artificielles sauf dans le cas de cleacutes eacutetrangegraveres vraiment trop compliqueacuteesen SQL on peut poser des cleacutes artificielles si on a une bonne raison (ce nest donc pas systeacutematique et cest agrave justifier)

On najoutera pas de cleacute artificielle en UML au moment de la modeacutelisation conceptuelle des donneacutees

Formellement en UML la notion de cleacute nexiste pas (contrairement agrave l ) elle est ajouteacutee par les E-A

pratiquants des BD

Logiquement on a pas besoin de cette notion en UML les cleacutes artificielles servent en relationnel et dans certains cas uniquementPratiquement cela peut conduire agrave des situations absurdes (comme enlever au niveau logique des cleacutes artificielles ajouteacutees au niveau conceptuel)

Attention

Conseil

Compleacutement

Fondamental

Cleacutes artificielles et niveau conceptuel

Bibliographie commenteacutee sur la modeacutelisation UML

27

-

-

- -

-

- -

-

-

3

4

5

si on fait du non-relationnel on ne doit pas ajouter de cleacutes artificielles dans certains cas (limbrication typiquement) cela arrive mecircme en relationnel avec la transformation de lheacuteritage (dans certains cas toujours)

Meacutethodologiquement il faut se concentrer agrave chaque phase sur ce qui est important donc au moment du MCD on traduit les besoins on repegravere les contraintes explicites (cleacute uniciteacute non nulliteacute) sans se preacuteoccuper de ce qui sera rendu neacutecessaire par la suite par la modeacutelisation relationnelle (les cleacutes eacutetrangegraveres par exemple) ou limpleacutementation (loptimisation par exemple) Agrave chaque jour suffit sa peine Peacutedagogiquement enfin les deacutebutants ont tendance (agrave cause des environnements de conception graphique comme phpMyAdmin notamment) agrave systeacutematiser les cleacutes artificielles en SQL (on pourrait en discuter) mais eacutegalement agrave ne pas faire le travail de recherche des cleacutes naturelles (au niveau relationnel notamment ce qui est une faute de modeacutelisation) Donc au plus tard on fait intervenir les cleacutes artificielles au plus on a une chance de penser aux cleacutes naturelles

Soit le modegravele relationnel suivant

1 Etu (id numEtu) avec numEtu cleacute 2 UV (id codeUv) avec codeUv cleacute3 Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

La question qui permet dafficher la liste des eacutetudiants (numEtu) avec leurs UVs (codeUv) neacutecessite une jointure des cleacutes artificielles Un modegravele sans ces cleacutes artificielles aurait eacuteteacute plus performant pour agrave causereacutepondre agrave cette question puisque toutes les informations se trouvent dans la relation Inscriptions

1 Etu (numEtu) 2 UV (codeUv) 3 Inscriptions (uv=gtUV etu=gtEtu)

Ne soyez pas systeacutematiqueIl est en effet freacutequent dans un projet reacuteel dadopter des cleacutes artificielles presque systeacutematiquement vous pourrez le faire en connaissance de cause quand vous aurez bien compris pourquoi cest inteacuteressant et quand ccedila ne lest pasLes cleacutes artificielles sont inteacuteressantes pour autre chose que les performances (leacutevolutiviteacute par exemple choisissez-les quand vous savez pourquoi)Les cleacutes artificielles ne dispensent pas de rechercher les cleacutes naturelles Les cleacutes artificielles ne sont pas la seule faccedilon doptimiser une base de donneacutees (indexation deacutenormalisation)

53 Bibliographie commenteacutee sur la modeacutelisation UML

Il existe de nombreux outils de modeacutelisation UML On pourra citer

logiciel Open Source et multi-plateformes facile dusage (qui marche neacuteanmoins mieux sur Linux Dia

que sur Windows)

(version gratuite)Objecteering

Cleacutes artificielles et optimisation est-il toujours plus performant dutiliser des cleacutes artificielles

Conseil

Compleacutement Outils de modeacutelisation UML

Etu (id numEtu) avec numEtu cleacute

UV (id codeUv) avec codeUv cleacute

Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

Etu (numEtu)

UV (codeUv)

Inscriptions (uv=gtUV etu=gtEtu)

Bibliographie commenteacutee sur la modeacutelisation UML

28

- - - - - -

- - - - - -

Agrave voir eacutegalement en Open Source ou (non testeacute par lauteur)ArgoUML EclipseUML

UML2 en action

Pour un aperccedilu plus deacutetailleacute des possibiliteacutes dexpression du diagramme de classe UML lire le chapitre 7 Deacuteveloppement du modegravele statique (pages 133 agrave 163)

On pourra notamment y trouver

Lassociation dagreacutegationLes proprieacuteteacutes dassociationLexpression de rocircles dans les associationsLes attributs de classeLes qualificatifsLes opeacuterations (ou meacutethodes)

Le chapitre donne de plus des conseils meacutethodologiques pour la conception (voir en particulier la synthegravese page 163)

On pourra eacutegalement y trouver

Des principes de choix de modeacutelisation entre attributs et classes et sur la segmentation des classesDes principes de seacutelection des attributs (redondance avec les associations avec les classes etc)Des principes de seacutelection des associationsDes principes de choix de cardinaliteacute (notamment pour la gestion dhistorisation)Des principes de seacutelection des relations de geacuteneacuteralisation (heacuteritage)Des principes dintroduction de meacutetaclasses (type)s

U M L e n Franccedilais

Une tregraves bonne reacutefeacuterence en ligne sur la modeacutelisation UML avec des cours des liens vers la norme etc

Le contenu deacutepasse tregraves largement lusage dUML pour la modeacutelisation de BD (et ne fait dailleurs pas de reacutefeacuterence preacutecise agrave ce sous-ensemble particulier)

On pourra consulter en particulier le chapitre sur les diagrammes de classe httpumlfreefrcoursi-p14html

UML en 5 eacutetapes

On consultera en particulier le tutoriel sur les diagrammes de classe httpdeveloppeurjournaldunetcomtutorielcpt010607cpt_umlintroshtml

Cinq petits conseils pour un scheacutema UML efficace

Compleacutement Modeacutelisation UML

Compleacutement Reacutefeacuterence UML en ligne

Compleacutement Tutoriel sur la modeacutelisation UML

Compleacutement Conseils

Synthegravese Les diagrammes de modeacutelisation conceptuelle

29

-

-

- -

-

- -

-

-

- -

-

- - - -

-

-

(chapitre 3)UML2 par la pratique

Des explications exemples et eacutetudes de cas

54 Synthegravese Les diagrammes de modeacutelisation conceptuelle

Un modegravele conceptuel peut ecirctre repreacutesenteacute sous forme de diagramme E-A ou sous forme de diagramme de classe UML

Classe ou Entiteacute

Attribut ou Proprieacuteteacute

TypeacuteMulti-valueacuteComposeacuteDeacuteriveacute

Meacutethode

ParamegravetresValeur de retour

Association

Association

VerbeCardinaliteacute

Heacuteritage

Heacuteritage dattributsHeacuteritage de meacutethodes

Composition (ou entiteacute faible)

Cardinaliteacute

Compleacutement Pratique

Exercices

30

-

-

-

-

-

-

-

1 2

1

1 Exercice Lab III[20 min]

Description du problegraveme

Un laboratoire souhaite geacuterer les meacutedicaments quil conccediloit

Un meacutedicament est deacutecrit par un nom qui permet de lidentifier En effet il nexiste pas deux meacutedicaments avec le mecircme nom Un meacutedicament comporte une description courte en franccedilais ainsi quune description longue en latin On gegravere aussi le conditionnement du meacutedicament cest agrave dire le nombre de pilules par boicircte (qui est un nombre entier)Agrave chaque meacutedicament on associe une liste deacutedieacutee de contre-indications geacuteneacuteralement plusieurs parfois aucune Les contre-indications sont trieacutees par ordre dimportance Lordre est total est strict pour un meacutedicament donc chaque contre-indication possegravede une importance et il nexiste pas deux contre-indications associeacutees au mecircme meacutedicament avec la mecircme importanceTout meacutedicament possegravede au moins un composant souvent plusieurs Un composant est identifieacute par un code unique et possegravede un intituleacute Tout composant peut intervenir dans la fabrication de plusieurs meacutedicaments Il existe des composants qui ne sont pas utiliseacutes pour fabriquer des meacutedicaments et que lon veut quand mecircme geacuterer

Donneacutees de test

Afin de mateacuterialiser notre base de donneacutees nous obtenons les descriptions suivantes

Le a pour description courte et pour description longue Chourix Meacutedicament contre la chute des chouxlaquo raquoVivamus fermentum semper porta Nunc diam velit adipiscing ut tristique vitae sagittis vel odio laquo

Il est conditionneacute en boicircte de 13Maecenas convallis ullamcorper ultricies Curabitur ornare raquoSes contre-indications sont

Le Chourix ne doit jamais ecirctre pris apregraves minuitLe Chourix ne doit jamais ecirctre mis au contact avec de leau

Ses composants sont le et le HG79 SN50Le a pour description courte et pour Tropas Meacutedicament contre les dysfonctionnements intellectuelslaquo raquodescription longue Suspendisse lectus leo consectetur in tempor sit amet placerat quis neque Etiam laquo

Il est conditionneacute en boicircte de 42luctus porttitor lorem sed suscipit est rutrum non raquoSes contre-indications sont

Le Tropas doit ecirctre gardeacute agrave labri de la lumiegravere du soleil

Son unique composant est le HG79Les composants existants sont

HG79 Vif-argent alleacutegeacute

ExercicesII

Exercice Eacutetudiants et UVs (introduction)

31

- - -

- - HG81 Vif-argent alourdi

SN50 Pur eacutetain

Question 1

Question 2

Question 3

2 Exercice Eacutetudiants et UVs (introduction)[20 min]

On dispose du scheacutema UML ci-apregraves qui deacutecrit des eacutetudiants des UV les notes obtenues par les eacutetudiants agrave ces UV et les diplocircmes dorigine de ces eacutetudiants

Eacutetudiants et UVs

key deacutesigne des cleacutes candidates ici toutes les cleacutes ne sont composeacutees que dun seul attributlocal key deacutesigne une cleacute localeun semestre est de la forme PYYYY ou AYYYY (ougrave YYYY deacutesigneacute une anneacutee sur 4 chiffre) exemple A2013 P2014

Rappel Notion de cleacute locale dans classes dassociation (cf p49)

Effectuez le modegravele conceptuel en UML de ce problegraveme

Indices

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans deacutedieacuteeles donneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition

[ ]solution ndeg4 [ ] p56

En mobilisant les regravegles adeacutequates proposer un modegravele logique de donneacutees correspondant en relationnel Le repeacuterage des domaines et des cleacutes est obligatoire

[ ]solution ndeg5 [ ] p57

Dessiner des tableaux remplis avec les donneacutees fournies en exemple afin de montrer que le modegravele fonctionne selon le besoin exprimeacute initialement On pourra mettre le premier mot seulement des descriptions pour gagner du temps

[ ]solution ndeg6 [ ] p57

Exercice Super-heacuteros relationnels I

32

-

-

Question

3 Exercice Super-heacuteros relationnels I[20 min]

La gamme de super-heacuteros GARVEL veut reacutealiser la base de donneacutees de leurs figurines articuleacutees La socieacuteteacute a fait reacutealiser un modegravele UML qui doit servir de point de deacutepart agrave la mise en œuvre

Modegravele UML Figurines GARVEL

Question

4 Exercice Objets Numeacuteriques Libres[30 min]

Lassociation ONL (Objets Numeacuteriques Libres) est une association de promotion des logiciels libres Elle souhaite exposer sur un site Internet une liste de logiciels libres Ce site sera adosseacute agrave une base de donneacutees relationnelle ou relationnel-objet La premiegravere eacutetape de sa deacutemarche est de reacutealiser un modegravele conceptuel repreacutesentant ce quelle souhaite faire

La base de donneacutees permet de geacuterer des applicationsLes applications sont identifieacutees par leur nom (LibreOffice Gimp) et leur version (10 21) et comportent une description courte et une URL Tous les attributs sont obligatoires Chaque application a une URL uniqueLa base de donneacutees permet de geacuterer des librairies

Traduire le scheacutema en modegravele logique relationnel ( )MLD1

On choisira obligatoirement les cleacutes primaires parmi celles neacutecessitant le plus petit nombre de bits possible pour leur codage

[ ]solution ndeg7 [ ] p57

Transformer le modegravele UML en modegravele relationnel (justifier les passages non triviaux en particulier la relation dheacuteritage)

[ ]solution ndeg8 [ ] p58

Exercice Objets Numeacuteriques Libres

33

-

-

-

-

-

-

-

-

-

-

-

-

Les librairies sont des logiciels mais pas des applications Elles ont les mecircmes attributs que les applications (nom version description courte URL) mais les URL ne sont pas neacutecessairement uniques Les applications peuvent deacutependre de librairies ou dautres applications et les librairies peuvent deacutependre dautres librairies (mais pas dune application)La base de donneacutees permet de geacuterer des composantsLes composants sont inteacutegreacutes agrave une application ou librairie Les composants ont un code interne agrave lapplication ou la librairie quil servent une version et une description courte et une URL Le code et le numeacutero de version permettent didentifier localement le composant au sein de la librairie ou de lapplication la description courte et lURL sont optionnellesLa base de donneacutees permet de geacuterer des licencesLes applications librairies et composants sont attacheacutes agrave une ou plusieurs licences identifieacutees par leur nom (GPL MPL) leur version et leur langue et comportant le texte inteacutegral de la licence Les versions des logiciels et licences sont de type numeacutero de licence majeur point numeacutero de licence mineur comme 10 ou 22La base de donneacutees permet de geacuterer des cateacutegoriesChaque logiciel est rangeacute dans une cateacutegorie principale et plusieurs cateacutegories secondaires Exemple de cateacutegories bureautique dessin multimeacutedia physique

Exemple (factice) de donneacutees

Applications

Scenari 41 une chaicircne eacuteditoriale XML httpscenariorg deacutepend de Libreoffice 43 et de ImageMagick 68Libreoffice 43 une suite bureautique WYSIWYG httplibreofficeorg

Librairie

ImageMagick 68 permet de creacuteer de convertir de modifier et dafficher des images http imagemagickorg

Composant

impng 02 est un composant de ImageMagick 68 permet de compresser une image au format PNG

Toutes ces applications librairies et composants sont disponibles sous une licence LGPL 30 et GPL 30 franccedilaisesToutes ces applications et librairies sont rangeacutees dans la cateacutegorie principale document Scenari est rangeacute dans la cateacutegorie secondaire Eacutedition WYSIWYM Libreoffice dans la cateacutegorie secondaire Bureautique ImageMagick dans la cateacutegorie secondaire Multimeacutedia

Question

Reacutealiser un MCD en UML[ ]solution ndeg9 [ ] p58

Devoirs

34

1 Exercice Arbre de scegravene 3D[30 minutes]

On souhaite pouvoir geacuterer les diffeacuterents eacuteleacutements composant des scegravenes 3D dans une base de donneacutees Une scegravene contient des objets qui eux-mecircmes peuvent appartenir agrave plusieurs scegravenes (au moins une) mais il ne peut y avoir plusieurs fois le mecircme objet dans une mecircme scegravene Dans chaque scegravene les objets peuvent ecirctre visibles ou invisibles Les scegravenes et les objets sont identifieacutes de maniegravere unique par un nom Une scegravene peut ecirctre active ou inactive Un objet a comme proprieacuteteacute une position dans lespace repreacutesenteacutee par un vecteur de reacuteels agrave trois composantes (x y z) Les objets sont organiseacutes de maniegravere hieacuterarchique un objet peut ecirctre parent de plusieurs objets et chaque objet peut avoir au plus un parent Des scripts peuvent ecirctre associeacutes agrave un objet ou agrave une scegravene (agrave lun ou agrave lautre mais pas aux deux) Un script est identifieacute de maniegravere unique par un nom et possegravede eacutegalement un attribut permettant de connaicirctre son eacutetat (actif ou inactif) Un personnage est un objet particulier qui possegravede des animations Une animation est relative agrave un personnage et est identifieacutee de maniegravere locale par un nom Agrave un objet est associeacute un maillage et celui-ci peut ecirctre utiliseacute par plusieurs objets Un maillage est identifieacute de maniegravere unique par un nom et est composeacute de plusieurs eacuteleacutements Chaque eacuteleacutement est relatif agrave un maillage et est identifieacute de maniegravere locale par un numeacutero Il existe exactement trois types deacuteleacutement des nœuds des arrecirctes et des faces Une face est deacutelimiteacutee par trois arrecirctes et chaque arrecircte est deacutelimiteacutee par deux nœuds Plusieurs arrecirctes peuvent partager un mecircme nœud et plusieurs faces peuvent partager une mecircme arrecircte Afin deacutevaluer la complexiteacute dune scegravene on souhaite pouvoir calculer le nombre de faces afficheacutees pour une scegravene donneacutee (cest-agrave-dire la somme du nombre de faces du maillage associeacute aux objets visibles de la scegravene) Un maillage possegravede plusieurs mateacuteriaux identifieacutes de maniegravere unique par un nom Un mateacuteriau peut ecirctre associeacute agrave plusieurs maillages Un mateacuteriau est caracteacuteriseacute par une couleur deacutefinie par un vecteur dentiers agrave quatre composantes rouge vert bleu alpha Un mateacuteriau peut posseacuteder une texture et celle-ci peut ecirctre utiliseacutee par plusieurs mateacuteriaux Une texture est identifieacutee de maniegravere unique par un nom et possegravede comme attribut une image

Question 1

Question 2

DevoirsIII

Proposez une clarification de ce problegraveme On pourra reclasser les informations par grande cateacutegorie scegravene objets scripts

Eacutetablissez un modegravele conceptuel en UML de ce problegraveme

Compleacutement Exercices de modeacutelisation suppleacutementaire

35

1 Exercice Appartements agrave louer[30 min]

Une agence dimmobilier (ventes et locations) veut geacuterer son parc dappartements dans une base de donneacutees Chaque appartement possegravede plusieurs piegraveces qui peuvent ecirctre des piegraveces dhabitation des piegraveces de rangement ou des commoditeacutes

Chaque piegravece a une superficie un nombre de prises eacutelectriques et des meubles Pour ces derniers on veut enregistrer le nom du modegravele et le type (chaise lit four etc) Rien nempecircche quune piegravece comporte plusieurs meubles identiques (par exemple plusieurs chaises PIN IQUEA) Les piegraveces dhabitation ont une ou plusieurs fenecirctres les piegraveces de rangement ont une ou plusieurs eacutetagegraveres et une surface de rangement utile totale On veut aussi savoir dans quelles piegraveces de rangement se situent les tableaux eacutelectriques de lappartement Finalement les piegraveces commoditeacutes peuvent ecirctre de trois types cuisine toilette ou salle de bain

Lagence veut aussi enregistrer les portes entre les diffeacuterentes piegraveces Une porte peut ecirctre agrave simple battant double battant coulissante ou une simple ouverture

Chaque appartement a une adresse une superficie totale (qui est la somme des superficies des piegraveces) et un type qui est la lettre T suivie du nombre de piegraveces dhabitation de lappartement Pour un appartement donneacute chaque piegravece est identifieacutee par un numeacutero (commenccedilant au numeacutero 1)

Lagence veut eacutegalement enregistrer le quartier ougrave se trouve lappartement auquel est lieacute un prix par megravetre carreacute Finalement elle veut garder un historique de lhistoire de lappartement les peacuteriodes pour lesquelles il est libre occupeacute en travaux ou vendu

Question

2 Exercice Objectifs[40 min]

Vous prenez la preacutesidence de lassociation Objectifs dont lobjet est daider ses eacutetudiants membres agrave mener des projets dans le cadre de leurs eacutetudes

Compleacutement Exercices de modeacutelisation suppleacutementaire

IV

Reacutealisez le diagramme UML reacutepondant aux besoins de cette agence[ ]solution ndeg10 [ ] p59

Exercice Objectifs

36

- - -

-

-

- - -

Vous constatez en arrivant dans lassociation que personne ne sait exactement quels sont les projets en cours ni qui fait quoi dans les projets Vous ne parvenez pas non plus agrave obtenir une liste exacte des partenaires sur lesquels lassociation peut compter La seule chose sur laquelle vous parvenez agrave mettre la main est un fichier tableur vaguement agrave jour

Vous deacutecidez quil est plus que temps de mettre en place une base de donneacutees afin dassurer la bonne gestion des informations les plus importantes pour lassociation Vous vous attachez pour cela agrave reacutealiser une analyse des besoins

Analysez les documents ci-apregraves

Etat des projets

Eacutetat des projets de lassociation Objectifs

Recueil de besoins

Agrave partir de leacutetude du fonctionnement actuel de lassociation vous relevez les choses importantes agrave geacuterer suivantes

Les membres de lassociation geacuteneacuteralement identifieacutes par leur preacutenomLes projets geacutereacutes par lassociation avec des dates de deacutebut et de fin preacutecises et un chef de projetLe deacutetail des tacircches de chaque projet avec leurs dates de deacutebut et de fin aussi et la liste de tous les membres qui y participentLa liste des partenaires des projets avec leur rocircle preacutecis pour chacun des projets auxquels ils participent

Afin de mieux geacuterer les attributions des projets il serait eacutegalement inteacuteressant de creacuteer une liste des speacutecialiteacutes correspondant agrave ce qui ce fait dans lassociation et daffecter une speacutecialiteacute agrave chaque membre ainsi quune agrave chaque projet pour voir si ce sont bien les membres les mieux adapteacutes qui travaille sur les projets

Recueil de donneacutees

Les discussions avec les anciens membres de lassociation vous apprennent les choses suivantes

Lassociation a termineacute de geacuterer les trois projets Comeacutedie Musicale geacutereacutee par Nathalie sur les trois premiers mois du semestre dautomne 1001 Science en fecircte geacutereacutee par Pierre sur tout le semestre de printemps 1003 et Nuit du picolo geacutereacutee par Julien en novembre 1001Les speacutecialiteacutes recenseacutees pour le moment sont Ville Universiteacute Sport Entreprise Culture InternationalIl faut au moins dix membres agrave lassociation (sinon elle ferme) recruter ceux qui manquentAidez lassociation agrave diviser ses projets en tacircches

Exercice Objectifs

37

- Les partenaires suivants aident ou ont aideacute lassociation la mairie pour la comeacutedie musicale et la science en fecircte qui apporte un soutien financier le ministegravere de la culture qui apporte son soutien logistique agrave la science en fecircte lassociation des commerccedilants de la ville qui apporte son soutien publicitaire agrave la comeacutedie musicale 1664 qui offre ses biegraveres agrave moitieacute prix pour la nuit du Picolo

Question 1

Question 2

Question 3

Afin de preacuteparer une analyse des besoins sommaire listez les donneacutees que vous devrez geacuterer agrave laide des documents et recueils de discussion agrave votre disposition Faites des hypothegraveses lorsque les donneacutees sont incomplegravetes ou incoheacuterentes

[ ]solution ndeg11 [ ] p59

Reacutealiser le MCD en UML et en E-A agrave partir des donneacutees preacutepareacutees dans la question preacuteceacutedente[ ]solution ndeg12 [ ] p60

Reacutealiser le MLD en relationnel en traduisant votre MCD[ ]solution ndeg13 [ ] p61

Contenus annexes

38Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

- - -

gt Attributs

Un attribut est une information eacuteleacutementaire qui caracteacuterise une classe et dont la valeur deacutepend de lobjet instancieacute

Le domaine des valeurs que peut prendre lattribut est fixeacute a prioriUn attribut est typeacute

Il peut prendre plusieurs valeurs distinctes dans son domaineUn attribut peut ecirctre multivalueacute Sa valeur alors est une fonction sur dautres attributs de la classeUn attribut peut ecirctre deacuteriveacute

(ou composite) Il joue alors le rocircle dun groupe dattributs (par Un attribut peut ecirctre composeacuteexemple une adresse peut ecirctre un attribut composeacute des attributs numeacutero type de voie nom de la voie) Cette notion renvoie agrave la notion de variable de type dans les langages de Record

programmation classiques

En UML on preacutefegravere lusage de meacutethodes aux attributs deacuteriveacutes On utilisera toujours des meacutethodes degraves que la valeur de lattribut deacuteriveacute deacutepend dautres attributs exteacuterieurs agrave sa classeEn UML on preacutefegravere lusage de compositions aux attributs composeacutes On utilisera toujours des compositions pour les attributs composeacutes et multivalueacutes

1 attributtype2 attribut_multivalueacute[nbMinValeursnbMaxValeurs]type3 attribut_deacuteriveacutetype4 attribut_composeacute5   - sous-attribut1type6   - sous-attribut2type7   -

Contenus annexes

Deacutefinition Attribut

Attention On utilise peu les attributs deacuteriveacutes et composeacutes en UML

Syntaxe

attributtype

attribut_multivalueacute[nbMinValeursnbMaxValeurs]type

attribut_deacuteriveacutetype

attribut_composeacute

  - sous-attribut1type

  - sous-attribut2type

  -

Contenus annexes

39Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Repreacutesentation dattributs en UML

Dans cet exemple les attributs Nom Preacutenom sont de type lun de 20 caractegraveres et lautre de 10 stringtandis que DateNaissance est de type et Age de type Preacutenom est un attribut multivalueacute ici date integerune personne peut avoir de 1 agrave 3 preacutenoms Age est un attribut deacuteriveacute il est calculeacute par une fonction sur DateNaissance

Meacutethodes (cf p39)

Composition (cf p5)

gt Meacutethodes

Une meacutethode (ou opeacuteration) est une fonction associeacutee agrave une classe dobjet qui permet dagir sur les objets de la classe ou qui permet agrave ces objets de renvoyer des valeurs (calculeacutees en fonction de paramegravetres)

1 methode(paramegravetres)type

Pour la modeacutelisation des bases de donneacutees les meacutethodes sont surtout utiliseacutees pour repreacutesenter des donneacutees calculeacutees (agrave linstar des attributs deacuteriveacutees) ou pour mettre en exergue des fonctions importantes du systegraveme cible Seules les meacutethodes les plus importantes sont repreacutesenteacutees lapproche est moins systeacutematique quen modeacutelisation objet par exemple

Lors de la transformation du modegravele conceptuel UML en modegravele logique relationnel les meacutethodes ne Leur repeacuterage au niveau conceptuel sert donc surtout daide-seront geacuteneacuteralement pas impleacutementeacutees

meacutemoire pour limpleacutementation au niveau applicatif

Exemple La classe Personne

Compleacutement Voir aussi

Deacutefinition Meacutethode

Syntaxe

Remarque Meacutethodes et modeacutelisation de BD

Remarque Meacutethodes relationnel relationnel-objet

methode(paramegravetres)type

Contenus annexes

40Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Au contraire un modegravele logique relationnel-objet permettra limpleacutementation de meacutethodes directement associeacutees agrave des tables Leur repeacuterage au niveau conceptuel est donc encore plus important

Transformation des meacutethodes par des vues (cf p40)

gt Transformation des meacutethodes par des vues

Lorsquune meacutethode est speacutecifieacutee sur un diagramme UML pour une classe C si cette meacutethode est une fonction relationnelle (elle renvoie une unique valeur et elle peut ecirctre reacutesolue par une requecircte SQL) alors on creacutee une vue qui reprend les attributs de la classe C et ajoute des colonnes calculeacutees pour les meacutethodes

Les attributs deacuteriveacutes eacutetant apparenteacutes agrave des meacutethodes ils peuvent eacutegalement ecirctre geacutereacutes par des vues

gt Classe dassociation

On utilise la notation des classes dassociation lorsque lon souhaite ajouter des proprieacuteteacutes agrave une association

Notation dune classe dassociation en UML

On reacuteserve en geacuteneacuteral les classes dassociation aux associations NM

Il est toujours possible de reacuteduire une classe dassociation sur une association 1N en migrant ses attributs sur la classe cocircteacute N et cest en geacuteneacuteral plus lisible ainsi

Compleacutement

Meacutethode

Remarque Attributs deacuteriveacutes

Deacutefinition Classe dassociation

Syntaxe Notation dune classe dassociation en UML

Meacutethode

Contenus annexes

41Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

-

Emplois

Selon le standard UML une classe dassociation est une classe et agrave ce titre elle peut ecirctre mobiliseacutee dans dautres associations ou dans des heacuteritages Nous deacuteconseillons neacuteanmoins ces notations qui ont tendance agrave complexifier la lecture et la transformation du diagramme

Nous conseillons donc de ne jamais associer une classe dassociation

gt Transformation des attributs

Pour chaque attribut eacuteleacutementaire et monovalueacute dune classe

on creacutee un attribut correspondant

Attribut

Classe1(ab)

Pour chaque attribut composite comprenant N sous-attributs dune classe

on creacutee N attributs correspondantsdont les noms sont la concateacutenation du nom de lattribut composite avec celui du sous-attribut

Exemple Exemple de classe dassociation

Conseil

Meacutethode Attributs simples

Meacutethode Attributs composites

Contenus annexes

42Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- - - -

Attribut composeacute

Classe1(ab_b1b_b2)

Pour chaque attribut multivalueacute b dune classe C

on creacutee une nouvelle relation RBqui comprend un attribut monovalueacute correspondant agrave bplus la cleacute de la relation repreacutesentant C la cleacute de RB est la concateacutenation des deux attributs

Attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Dans le cas ougrave le nombre maximum de est fini et petit on peut eacutegalement adopter la transformation b

suivante Classe1(ab1b2b3b4b5b6b7b8b9b10)

Si le nombre dattributs est infini ( ) cest impossible sil est trop grand ce nest pas souhaitableb[1]

On combine les regravegles eacutenonceacutees pour les attributs composeacutes et pour les attributs multivalueacutes

Attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Transformation des compositions (cf p42)

Meacutethode Attributs multivalueacutes

Meacutethode Attributs multivalueacutes (meacutethode alternative)

Meacutethode Attributs composeacutes multivalueacutes

Rappel Voir aussi

Contenus annexes

43Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

gt Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Compleacutement Attributs multivalueacutes et composeacutes

Contenus annexes

44Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

Rappel Voir aussi

Rappel

Meacutethode

Contenus annexes

45Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p48)

gt Transformation des associations 1N

Pour chaque association binaire de type 1N

on ajoute agrave la relation cocircteacute N une cleacute eacutetrangegravere vers la relation cocircteacute 1

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Meacutethode

Contenus annexes

46Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Association 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Contrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p46)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

R1

Compleacutement

Rappel

Meacutethode

Contenus annexes

47Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p47)

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Deacutefinition Projection

Contenus annexes

48Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Deacutefinition Projection

Contenus annexes

49Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Transformation des classes dassociation

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de lassociation NM

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Meacutethode Classe dassociation NM

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Composition

6

- -

-

- -

- Le cycle de vie des objets parties est lieacute agrave celui de lobjet composite donc un objet partie disparaicirct quand lobjet composite auquel il est associeacute disparaicirct

La composition est une association particuliegravere (binaire de cardinaliteacute contrainte)La composition nest pas symeacutetrique une classe joue le rocircle de conteneur pour les classes lieacutees elle prend donc un rocircle particulier a prioriLa composition est une agreacutegation avec des contraintes suppleacutementaires (non partageabiliteacute et cycle de vie lieacute)

Notation de la composition en UML

La cardinaliteacute cocircteacute composite est toujours de exactement 1

Cocircteacute partie la cardinaliteacute est libre elle peut ecirctre 01 1 ou bien 1

Un livre

On voit bien ici quun chapitre na de sens que faisant partie dun livre quil ne peut exister dans deux livres diffeacuterents et que si le livre nexiste plus les chapitres le composant non plus

La composition permet dexprimer une association analogue agrave celle qui relie une entiteacute faible agrave une entiteacute

identifiante en modeacutelisation Lentiteacute de type faible correspond agrave un objet partie et lentiteacute identifiante agrave E-A

un objet composite

Une composition avec une classe partie doteacutee dun seul attribut peut seacutecrire avec un attribut multivalueacuteUn attribut composeacute et multivalueacute peut seacutecrire avec une composition

Remarque

Syntaxe Notation dune composition en UML

Attention Composition et cardinaliteacute

Exemple Exemple de composition

Remarque Composition et entiteacutes faibles

Conseil Composition et attribut multivalueacute

Agreacutegation

7

- - Attributs (cf p38)

Agreacutegation (cf p7)

13 Agreacutegation

Lagreacutegation est une association particuliegravere utiliseacutee pour preacuteciser une relation toutpartie (ou ensembleeacuteleacutement) on parle dassociation meacutereacuteologique

Notation de lagreacutegation en UML

La cardinaliteacute peut ecirctre exprimeacutee librement en particulier les instances de la classe Eacuteleacutement peuvent ecirctre associeacutees agrave plusieurs instances de la classe Ensemble et mecircme de plusieurs classes

Lagreacutegation garde toutes les proprieacuteteacutes dune association classique (cardinaliteacute cycle de vie etc) elle ajoute simplement une terminologie un plus preacutecise via la notion de toutpartie

14 Explicitation des associations (sens de lecture et rocircle)

Il est possible dajouter le sens de lecture du verbe caracteacuterisant lassociation sur un diagramme de classe UML afin den faciliter la lecture On ajoute pour cela un signe ou (ou un triangle noir) agrave cocircteacute du nom de lt gt

lassociation

Il est possible de preacuteciser le rocircle joueacute par une ou plusieurs des classes composant une association afin den faciliter la compreacutehension On ajoute pour cela ce rocircle agrave cocircteacute de la classe concerneacutee (parfois dans un petit encadreacute colleacute au trait de lassociation

Rocircle et sens de lecture sur une association

Rappel Voir aussi

Deacutefinition Association dagreacutegation

Syntaxe

Attention

Syntaxe Sens de lecture

Syntaxe Rocircle

Exemple

Notion de cleacute locale dans les compositions et les associations NM

8

- - -

15 Associations reacuteflexives

Une association reacuteflexive est une association qui associe une classe avec elle-mecircme

Association reacuteflexive laquo ami raquo

Lexplicitation des associations est souvent utile dans le cas des associations reacuteflexives non symeacutetrique (ou chaque objet ne joue pas le mecircme rocircle)

Une instance peut ecirctre associeacutee avec elle-mecircme dans le cas de dune association reacuteflexive

Si lon souhaite exprimer le contraire (une instance peut ecirctre associeacutee avec dautres instances de la mecircme classe mais pas avec elle-mecircme)

on ajoute une contrainte en UML (par exemple les personnes ne se marient pas avec elles-mecircmes) que lon traduira en relationnel par une contrainte du type AVEC pk fk

que lon traduira en SQL par une clause du type CHECK pk = fk

16 Notion de cleacute locale dans les compositions et les associations NM

Le concept de cleacute locale appartient au niveau conceptuel il est heacuteriteacute de lentiteacute faible du modegravele conceptuel Entiteacute-Association (eacutequivalent de la composition en UML) Dans une entiteacute faible ou une composition une cleacute de la classe composant est dite locale car elle ne permet didentifier lobjet que si lon connaicirct la classe composite

Dans certaines constructions en UML (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Deacutefinition Association reacuteflexive

Exemple

Meacutethode

Attention Auto-association dans les associations reacuteflexives

Deacutefinition

Attention

Classe dassociation avec cleacute locale

9

Dans une associations NM on peut avoir des (vraies) cleacutes ou des cleacutes locales En revanche dans une composition on na que des cleacutes locales en effet si le composant est identifiable indeacutependamment de son composite cest en geacuteneacuteral quil a une vie propre et donc que lon est pas en preacutesence dune composition

17 Classe dassociation avec cleacute locale

Classe dassociation (cf p40)

Dans lexemple suivant chaque personne peut avoir un emploi dans plusieurs socieacuteteacutes mais elle ne peut pas avoir plusieurs emplois dans une mecircme socieacuteteacute

Emplois

La transformation en relationnelle est coheacuterente avec cette contrainte

1 Socieacuteteacute()2 Personne()3 Emploi(personne=gtPersonne societe=gtSociete postestring salaireinteger quotitenumeric(12))

La speacutecification dune cleacute locale dans emploi par exemple ici le poste permet de lever cette contrainte lorsquon le souhaite en permettant didentifier chaque instance de lassociation ici lemploi dune personne par sa socieacuteteacute

Attention

Rappel

Contrainte inheacuterente agrave la relation NM

Meacutethode Inteacuterecirct de la cleacute locale

Socieacuteteacute()

Personne()

Emploi(personne=gtPersonne societe=gtSociete postestring salaireinteger

quotitenumeric(12))

Associations ternaires

10

La transformation en relationnelle permettra de maintenir la modeacutelisation en ajoutant la cleacute locale agrave la cleacute initiale

1 Socieacuteteacute()2 Personne()3 Emploi(personne=gtPersonne societe=gtSociete postestring salaireinteger quotitenumeric(72))

18 Associations ternaires

Notation dune association ternaire

Il est toujours possible de reacuteeacutecrire une association ternaire avec trois associations binaires en transformant lassociation en classe

Syntaxe

Conseil Ne pas abuser des associations ternaires

Socieacuteteacute()

Personne()

Emploi(personne=gtPersonne societe=gtSociete postestring salaireinteger

quotitenumeric(72))

Passage UML-Relationnel Associations avanceacutees

11

En pratique on nutilise jamais en UML dassociation de degreacute supeacuterieur agrave 3

2 Passage UML-Relationnel Associations avanceacuteesObjectifs

Savoir faire le passage dun scheacutema conceptuel UML agrave un scheacutema relationnel dans tous les cas

Reconnaicirctre les cas de transformation qui se traitent toujours de la mecircme faccedilon et ceux qui neacutecessite une modeacutelisation compleacutementaire

21 Trousseau de cleacutes

En UML et en relationnel il existe plusieurs termes mobilisant le mot laquo cleacute raquo le seul concept qui est commun est le concept de Tous les autres sont speacutecifiques au niveau conceptuel ou relationnelcleacute

Cleacute (key)

Cleacute locale (local key)

Cleacute (key)

Cleacute candidate (candidate key)

Cleacute primaire (primary key) et Cleacute alternative (alternate key)

Cleacute artificielle (surrogate key) et Cleacute naturelle (natural key business key)

Cleacute eacutetrangegravere (foreign key)

Conseil Pas de degreacute supeacuterieur agrave 3

Attention

Rappel Concept commun au niveau UML et relationnel

Rappel Concept speacutecifique au niveau UML

Rappel Concepts speacutecifiques au niveau relationnel

Transformation des compositions

12

- -

Deacutefinition des cleacutes en relationnel

22 Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Transformation des agreacutegations

13

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

23 Transformation des agreacutegations

Les associations de type agreacutegation se traitent de la mecircme faccedilon que les associations classiques

Agreacutegation 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Compleacutement Attributs multivalueacutes et composeacutes

Rappel Voir aussi

Rappel Agreacutegation

Transformation des classes dassociation avec cleacute locale

14

- -

Agreacutegation NM

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2)

24 Transformation des classes dassociation avec cleacute locale

Les attributs de la classe dassociation

sont ajouteacutes agrave la relation issue de lassociation NM la cleacute locale de la classe dassociation est concateacuteneacutee aux cleacutes eacutetrangegraveres composant deacutejagrave la cleacute primaire de la relation dassociation

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Meacutethode Classe dassociation NM

Exercice

15

25 Correspondance entre UML et relationnel

Passsage UML vers Relationnel

Exercice

16

26 ExerciceQuel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

[ ]solution ndeg2 [ ] p53

Exercice

17

27 ExerciceSoit le scheacutema UML suivant

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

[ ]solution ndeg3 [ ] p54

Modeacutelisation avanceacutee des associations 11 en relationnel

18

-

- -

-

-

3 Modeacutelisation avanceacutee des associations 11 en relationnelObjectifs

Savoir faire le passage dun scheacutema conceptuel UML agrave un scheacutema relationnel

Connaicirctre les choix possibles pour le cas de lassociation 11 et savoir faire le meilleur choix

Il existe des formulations conceptuelles en UML qui sont plus deacutelicates agrave traduire au niveau logique en relationnel comme lassociation 11 Ces cas requiegraverent un choix eacuteclaireacute de la part du concepteur

31 Transformation des associations 11 (approche geacuteneacuterale)

Il existe deux solutions pour transformer une association 11

Avec deux relations on traite lassociation 11 comme une association 1N puis lon ajoute une contrainte UNIQUE sur la cleacute eacutetrangegravere pour limiter la cardinaliteacute maximale agrave 1 Avec une seule relation on fusionne les deux classes en une seule relation

Association 11

Une des deux relations est choisie pour porter la cleacute eacutetrangegravere on ajoute les contraintes ou (cleacute candidate) sur la cleacute eacutetrangegravere et si neacutecessaire une UNIQUE KEY

contrainte imposant linstanciation simultaneacutee des deux relations

Classe1(abc=gtClasse2) avec c UNIQUE ou KEY

Classe2(cd)

ou

Classe1(ab)

Classe2(cda=gtClasse1) avec a UNIQUE ou KEY

On creacuteeacute une seule relation contenant lensemble des attributs des deux classes

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Meacutethode Avec deux relations (cleacute eacutetrangegravere)

Meacutethode Avec une relation (fusion)

Transformation des associations 1111

19

- -

- - - - - -

- on choisit une cleacute parmi les cleacutes candidates

Classe12(abcd) avec c UNIQUE ou KEY

ou

Classe21(cdab) avec a UNIQUE ou KEY

Ce choix entre les deux meacutethodes sera conduit par une appreacuteciation du rapport entre

La complexiteacute introduite par le fait davoir deux relations lagrave ou une suffitLa pertinence de la seacuteparation des deux relations dun point de vue seacutemantiqueLes pertes de performance dues agrave leacuteclatement des relationsLes pertes de performance dues au fait davoir une grande relationLes questions de seacutecuriteacute et de sucircreteacute factoriseacutees ou non au niveau des deux relations

Dans le cas dune association 1111 il faudra ajouter une contrainte compleacutementaire

Transformation des associations 1111 (cf p19)

32 Transformation des associations 1111

Le plus souvent cest meacutethode par des relations qui est la plus adapteacutee agrave ce casfusionLorsquelle ne lest pas et que lon choisit deux relations il faut ajouter une contrainte dynamique qui controcirclera que les deux relations sont bien toujours instancieacutees ensembles Notons que la cleacute eacutetrangegravere peut ecirctre choisie comme cleacute primaire

Association 11

Classe12(abcd) avec c KEY

ou

Classe21(cdab) avec a KEY

ou

Classe1(abc=gtClasse2) avec c KEY

Classe2(cd)

Contrainte PROJECTION(Classe1c) = PROJECTION(Classe2c)

ou

Classe1(ab)

Remarque Fusion des relations dans le cas de la traduction de lassociation 11

Compleacutement

Meacutethode Association 1111

Transformation des associations 0111

20

-

-

-

-

Classe2(cda=gtClasse1) avec a KEY

Contrainte PROJECTION(Classe1a) = PROJECTION(Classe2a)

La contrainte dynamique exprimeacutee ici suit le mecircme principe que pour les association 1NContrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p44)

33 Transformation des associations 0111

Le plus souvent cest la meacutethode par les deux relations qui est la plus adapteacutee on choisira toujours la relation cocircteacute 01 pour ecirctre reacutefeacuterenccedilante

Il est possible dutiliser la fusion dans ce cas les cleacutes cocircteacute 01 deviennent des attributs il ne UNIQUE

peuvent plus ecirctre cleacutes pouvant ecirctre NULL

Association 011

Classe1(abc=gtClasse2) avec c KEY

Classe2(cd)

ou

Classe12(cdab) avec a UNIQUE

34 Transformation des associations 0101

On choisit la solution avec deux relations dun cocircteacute ou de lautre la cleacute eacutetrangegravere est associeacute agrave la contrainte ce nest pas une cleacute car elle peut ecirctre nulleUNIQUE

Il nest pas souhaitable de choisir la fusion lune des deux relations pouvant ecirctre nulle on ne pourrait plus trouver de cleacute naturelle

Association 0101

Classe1(abc=gtClasse2) avec c UNIQUE

Classe2(cd)

ou

Compleacutement Contrainte dynamique

Meacutethode Association 0111

Meacutethode Association 0101

Exemple de choix pour une relation 11

21

-

- -

-

-

Classe1(ab)

Classe2(cda=gtClasse1) avec a UNIQUE

35 Exemple de choix pour une relation 11

Soit deux entiteacutes homme et femme et une association mariage de cardinaliteacute 1111 entre ces deux entiteacutes (hommes et femmes sont donc obligatoirement marieacutes)Les entiteacutes homme et femme sont identifieacutees par un attribut nom (dans ce modegravele chaque personne a un nom unique on pourrait remplacer le nom par un identifiant comme le numeacutero de seacutecuriteacute social ou par une cleacute artificielle pour ecirctre plus proche de la reacutealiteacute)

Bien que de type 1111 le choix de la fusion nest pas tregraves opportun car il sagit bien dobjets distincts que lon veut modeacuteliser

On choisira donc plutocirct la repreacutesentation avec deux relationsLa cleacute eacutetrangegravere pourra ecirctre du cocircteacute homme ou femme mecircme si la pratique dominante nous incite agrave la mettre du cocircteacute femmeOn pourra eacutegalement deacutecider de prendre la cleacute eacutetrangegravere comme cleacute primaire

1 homme (nom)2 femme (mariage=gthomme nom) avec nom KEY3 Contrainte PROJ(hommenom) = PROJ(femmemariage)

Si lassociation avait eacuteteacute de cardinaliteacute 0101 (certains hommes et femmes ne sont pas marieacutes) un choix similaire se serait imposeacute avec limpossibiliteacute de choisir la cleacute eacutetrangegravere comme cleacute primaire celle-ci pouvant ecirctre nulle et neacutetant donc plus candidate

1 homme (nom)2 femme (nom mariage=gthomme) avec mariage UNIQUE

4 Autres eacuteleacutements utiles en UML packages et steacutereacuteotypesObjectifs

Maicirctriser le diagramme de classe UML dans le cas de la conception de BD

41 Paquetages

Les paquetages (plus communeacutement appeleacutes ) sont des eacuteleacutements servant agrave organiser un modegravelepackage

Ils sont particuliegraverement utiles degraves que le modegravele comporte de nombreuses classes et que celles-ci peuvent ecirctre trieacutees selon plusieurs aspects structurants

Exemple

Exemple

Deacutefinition Package

homme (nom)

femme (mariage=gthomme nom) avec nom KEY

Contrainte PROJ(hommenom) = PROJ(femmemariage)

homme (nom)

femme (nom mariage=gthomme) avec mariage UNIQUE

Steacutereacuteotype

22

Notation des paquetages en UML

Exemple dutilisation des packages

On repreacutesente chaque classe au sein dun Il est alors possible de faire une preacutesentation globale du packagemodegravele (tous les ) partielle (une partie des ) ou centreacutee sur un seul packages packages package

Pour une repreacutesentation partielle ou centreacutee sur un on repreacutesente les concerneacutes avec leurs package packagesclasses propres ainsi que toutes les classes lieacutees des autres packages (et seulement celles-ci)

Preacutesentation partielle du modegravele centreacutee sur un package

Syntaxe

Exemple

Meacutethode

Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt

23

42 Steacutereacuteotype

Un steacutereacuteotype UML est une syntaxe permettant dajouter de la seacutemantique agrave la modeacutelisation des classes Il permet de deacutefinir des afin de regrouper conceptuellement un ensemble de classes (agrave linstar types de classedune classe qui permet de regrouper conceptuellement un ensemble dobjets)

Cest une meacutecanique de meacuteta-modeacutelisation elle permet deacutetendre le meacuteta-modegravele UML cest agrave dire le modegravele conceptuel du modegravele conceptuel

Un meacuteta-modegravele est le modegravele dun modegravele Par exemple le meacuteta-modegravele UML comprend les concepts de classe attribut association cardinaliteacute composition agreacutegation contraintes annotations On mobilise ces concepts (on les instancie) pour exprimer un modegravele particulier suivant le formalisme UML

Les steacutereacuteotypes permettent donc dajouter au meacuteta-modegravele UML standard celui que tout le monde utilise des concepts locaux pour enrichir le langage de modeacutelisation que lon utilise pour reacutealiser des modegraveles

Notation dun steacutereacuteotype en UML

Un steacutereacuteotype speacutecifique enrichit le meacuteta-modegravele UML mais selon une seacutemantique qui est propre agrave celui qui la poseacute non standard donc La conseacutequence est que pour un tiers linterpreacutetation du steacutereacuteotype nest plus normaliseacutee et sera potentiellement plus facilement erroneacutee Il convient donc de ne pas abuser de cette meacutecanique

Deux ou trois steacutereacuteotypes speacutecifiques correctement deacutefinis sont faciles agrave transmettre plusieurs dizaines repreacutesenteraient un nouveau langage complet agrave apprendre pour le lecteur du modegravele

Il existe des steacutereacuteotypes fournit en standard par UML ou communeacutement utiliseacutes par les modeacutelisateurs Lavantage est quil seront compris plus largement au mecircme titre que le reste du meacuteta-modegravele (ils ont une valeur de standard)

43 Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt

Deacutefinition Steacutereacuteotype UML

Deacutefinition Meacuteta-modegravele

Syntaxe

Conseil Steacutereacuteotypes speacutecifiques et steacutereacuteotypes standard

Syntaxe

Type utilisateurs steacutereacuteotype ltltdataTypegtgt

24

Steacutereacuteotype UML permettant dexprimer une eacutenumeacuteration

Exemple de modeacutelisation UML deacutenumeacuteration

44 Type utilisateurs steacutereacuteotype ltltdataTypegtgt

Les types utilisateurs permettent de deacutefinir des types complexes propres en extension des types primaires (entier chaicircne date)

Steacutereacuteotype dataType

Steacutereacuteotype dataType (exemple)

Cette modeacutelisation est eacutequivalente agrave la modeacutelisation des attributs composeacutes directement dans la classe principale Cest une repreacutesentation plus standard en UML

Exemple

Syntaxe

Exemple

Meacutethode Attributs composeacutes

Synthegravese sur la modalisation UML et relationnelle

25

Quelques eacuteleacutements de stylistique UML

26

-

- -

-

-

-

- - -

- - - -

1

2

3

5 Synthegravese sur la modalisation UML et relationnelle51 Quelques eacuteleacutements de stylistique UML

Toutes les associations doivent ecirctre nommeacutees (sauf composition heacuteritage agreacutegation)Ne pas utiliser de nom geacuteneacuterique pour les Classes comme Entiteacute Classe Objet TrucEacuteviter les noms geacuteneacuteriques pour les associations (comme est associeacute agrave)Attention au sens des compositions et agreacutegation le losange est cocircteacute ensemble et noubliez pas les cardinaliteacutes notamment cocircteacute parties

Nutilisez pas le souligneacute ni les en UML pour identifier les cleacutes preacutefeacuterez la contrainte keyPreacutefeacuterez lheacuteritage aux booleacuteens de typage en UMLLes attributs deacuteriveacutes sont reacuteserveacutes aux deacuterivations simples (des attributs de la mecircme classe) si cest plus complexe preacutefeacuterez des meacutethodes (et dans le doute preacutecisez les modes de calcul sur le scheacutema ou dans une note agrave part)Donnez des exemples de contenu lorsque ce nest pas eacutevident (lorsque le couple nom dattribut et type ne permet pas de faccedilon eacutevidente de comprendre de quoi lon parle)Inutile de deacuteclarer le type booleacuteen en UML utilisez-le directement comme un type de donneacutees connu

Si tous vos heacuteritages sont exclusifs notez-le agrave part pour alleacuteger votre scheacutema (et eacuteviter labondance de XOR)

52 Attention aux cleacutes artificielles

en UML on ne pose jamais de cleacutes artificiellesen relationnel on pose rarement des cleacute artificielles sauf dans le cas de cleacutes eacutetrangegraveres vraiment trop compliqueacuteesen SQL on peut poser des cleacutes artificielles si on a une bonne raison (ce nest donc pas systeacutematique et cest agrave justifier)

On najoutera pas de cleacute artificielle en UML au moment de la modeacutelisation conceptuelle des donneacutees

Formellement en UML la notion de cleacute nexiste pas (contrairement agrave l ) elle est ajouteacutee par les E-A

pratiquants des BD

Logiquement on a pas besoin de cette notion en UML les cleacutes artificielles servent en relationnel et dans certains cas uniquementPratiquement cela peut conduire agrave des situations absurdes (comme enlever au niveau logique des cleacutes artificielles ajouteacutees au niveau conceptuel)

Attention

Conseil

Compleacutement

Fondamental

Cleacutes artificielles et niveau conceptuel

Bibliographie commenteacutee sur la modeacutelisation UML

27

-

-

- -

-

- -

-

-

3

4

5

si on fait du non-relationnel on ne doit pas ajouter de cleacutes artificielles dans certains cas (limbrication typiquement) cela arrive mecircme en relationnel avec la transformation de lheacuteritage (dans certains cas toujours)

Meacutethodologiquement il faut se concentrer agrave chaque phase sur ce qui est important donc au moment du MCD on traduit les besoins on repegravere les contraintes explicites (cleacute uniciteacute non nulliteacute) sans se preacuteoccuper de ce qui sera rendu neacutecessaire par la suite par la modeacutelisation relationnelle (les cleacutes eacutetrangegraveres par exemple) ou limpleacutementation (loptimisation par exemple) Agrave chaque jour suffit sa peine Peacutedagogiquement enfin les deacutebutants ont tendance (agrave cause des environnements de conception graphique comme phpMyAdmin notamment) agrave systeacutematiser les cleacutes artificielles en SQL (on pourrait en discuter) mais eacutegalement agrave ne pas faire le travail de recherche des cleacutes naturelles (au niveau relationnel notamment ce qui est une faute de modeacutelisation) Donc au plus tard on fait intervenir les cleacutes artificielles au plus on a une chance de penser aux cleacutes naturelles

Soit le modegravele relationnel suivant

1 Etu (id numEtu) avec numEtu cleacute 2 UV (id codeUv) avec codeUv cleacute3 Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

La question qui permet dafficher la liste des eacutetudiants (numEtu) avec leurs UVs (codeUv) neacutecessite une jointure des cleacutes artificielles Un modegravele sans ces cleacutes artificielles aurait eacuteteacute plus performant pour agrave causereacutepondre agrave cette question puisque toutes les informations se trouvent dans la relation Inscriptions

1 Etu (numEtu) 2 UV (codeUv) 3 Inscriptions (uv=gtUV etu=gtEtu)

Ne soyez pas systeacutematiqueIl est en effet freacutequent dans un projet reacuteel dadopter des cleacutes artificielles presque systeacutematiquement vous pourrez le faire en connaissance de cause quand vous aurez bien compris pourquoi cest inteacuteressant et quand ccedila ne lest pasLes cleacutes artificielles sont inteacuteressantes pour autre chose que les performances (leacutevolutiviteacute par exemple choisissez-les quand vous savez pourquoi)Les cleacutes artificielles ne dispensent pas de rechercher les cleacutes naturelles Les cleacutes artificielles ne sont pas la seule faccedilon doptimiser une base de donneacutees (indexation deacutenormalisation)

53 Bibliographie commenteacutee sur la modeacutelisation UML

Il existe de nombreux outils de modeacutelisation UML On pourra citer

logiciel Open Source et multi-plateformes facile dusage (qui marche neacuteanmoins mieux sur Linux Dia

que sur Windows)

(version gratuite)Objecteering

Cleacutes artificielles et optimisation est-il toujours plus performant dutiliser des cleacutes artificielles

Conseil

Compleacutement Outils de modeacutelisation UML

Etu (id numEtu) avec numEtu cleacute

UV (id codeUv) avec codeUv cleacute

Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

Etu (numEtu)

UV (codeUv)

Inscriptions (uv=gtUV etu=gtEtu)

Bibliographie commenteacutee sur la modeacutelisation UML

28

- - - - - -

- - - - - -

Agrave voir eacutegalement en Open Source ou (non testeacute par lauteur)ArgoUML EclipseUML

UML2 en action

Pour un aperccedilu plus deacutetailleacute des possibiliteacutes dexpression du diagramme de classe UML lire le chapitre 7 Deacuteveloppement du modegravele statique (pages 133 agrave 163)

On pourra notamment y trouver

Lassociation dagreacutegationLes proprieacuteteacutes dassociationLexpression de rocircles dans les associationsLes attributs de classeLes qualificatifsLes opeacuterations (ou meacutethodes)

Le chapitre donne de plus des conseils meacutethodologiques pour la conception (voir en particulier la synthegravese page 163)

On pourra eacutegalement y trouver

Des principes de choix de modeacutelisation entre attributs et classes et sur la segmentation des classesDes principes de seacutelection des attributs (redondance avec les associations avec les classes etc)Des principes de seacutelection des associationsDes principes de choix de cardinaliteacute (notamment pour la gestion dhistorisation)Des principes de seacutelection des relations de geacuteneacuteralisation (heacuteritage)Des principes dintroduction de meacutetaclasses (type)s

U M L e n Franccedilais

Une tregraves bonne reacutefeacuterence en ligne sur la modeacutelisation UML avec des cours des liens vers la norme etc

Le contenu deacutepasse tregraves largement lusage dUML pour la modeacutelisation de BD (et ne fait dailleurs pas de reacutefeacuterence preacutecise agrave ce sous-ensemble particulier)

On pourra consulter en particulier le chapitre sur les diagrammes de classe httpumlfreefrcoursi-p14html

UML en 5 eacutetapes

On consultera en particulier le tutoriel sur les diagrammes de classe httpdeveloppeurjournaldunetcomtutorielcpt010607cpt_umlintroshtml

Cinq petits conseils pour un scheacutema UML efficace

Compleacutement Modeacutelisation UML

Compleacutement Reacutefeacuterence UML en ligne

Compleacutement Tutoriel sur la modeacutelisation UML

Compleacutement Conseils

Synthegravese Les diagrammes de modeacutelisation conceptuelle

29

-

-

- -

-

- -

-

-

- -

-

- - - -

-

-

(chapitre 3)UML2 par la pratique

Des explications exemples et eacutetudes de cas

54 Synthegravese Les diagrammes de modeacutelisation conceptuelle

Un modegravele conceptuel peut ecirctre repreacutesenteacute sous forme de diagramme E-A ou sous forme de diagramme de classe UML

Classe ou Entiteacute

Attribut ou Proprieacuteteacute

TypeacuteMulti-valueacuteComposeacuteDeacuteriveacute

Meacutethode

ParamegravetresValeur de retour

Association

Association

VerbeCardinaliteacute

Heacuteritage

Heacuteritage dattributsHeacuteritage de meacutethodes

Composition (ou entiteacute faible)

Cardinaliteacute

Compleacutement Pratique

Exercices

30

-

-

-

-

-

-

-

1 2

1

1 Exercice Lab III[20 min]

Description du problegraveme

Un laboratoire souhaite geacuterer les meacutedicaments quil conccediloit

Un meacutedicament est deacutecrit par un nom qui permet de lidentifier En effet il nexiste pas deux meacutedicaments avec le mecircme nom Un meacutedicament comporte une description courte en franccedilais ainsi quune description longue en latin On gegravere aussi le conditionnement du meacutedicament cest agrave dire le nombre de pilules par boicircte (qui est un nombre entier)Agrave chaque meacutedicament on associe une liste deacutedieacutee de contre-indications geacuteneacuteralement plusieurs parfois aucune Les contre-indications sont trieacutees par ordre dimportance Lordre est total est strict pour un meacutedicament donc chaque contre-indication possegravede une importance et il nexiste pas deux contre-indications associeacutees au mecircme meacutedicament avec la mecircme importanceTout meacutedicament possegravede au moins un composant souvent plusieurs Un composant est identifieacute par un code unique et possegravede un intituleacute Tout composant peut intervenir dans la fabrication de plusieurs meacutedicaments Il existe des composants qui ne sont pas utiliseacutes pour fabriquer des meacutedicaments et que lon veut quand mecircme geacuterer

Donneacutees de test

Afin de mateacuterialiser notre base de donneacutees nous obtenons les descriptions suivantes

Le a pour description courte et pour description longue Chourix Meacutedicament contre la chute des chouxlaquo raquoVivamus fermentum semper porta Nunc diam velit adipiscing ut tristique vitae sagittis vel odio laquo

Il est conditionneacute en boicircte de 13Maecenas convallis ullamcorper ultricies Curabitur ornare raquoSes contre-indications sont

Le Chourix ne doit jamais ecirctre pris apregraves minuitLe Chourix ne doit jamais ecirctre mis au contact avec de leau

Ses composants sont le et le HG79 SN50Le a pour description courte et pour Tropas Meacutedicament contre les dysfonctionnements intellectuelslaquo raquodescription longue Suspendisse lectus leo consectetur in tempor sit amet placerat quis neque Etiam laquo

Il est conditionneacute en boicircte de 42luctus porttitor lorem sed suscipit est rutrum non raquoSes contre-indications sont

Le Tropas doit ecirctre gardeacute agrave labri de la lumiegravere du soleil

Son unique composant est le HG79Les composants existants sont

HG79 Vif-argent alleacutegeacute

ExercicesII

Exercice Eacutetudiants et UVs (introduction)

31

- - -

- - HG81 Vif-argent alourdi

SN50 Pur eacutetain

Question 1

Question 2

Question 3

2 Exercice Eacutetudiants et UVs (introduction)[20 min]

On dispose du scheacutema UML ci-apregraves qui deacutecrit des eacutetudiants des UV les notes obtenues par les eacutetudiants agrave ces UV et les diplocircmes dorigine de ces eacutetudiants

Eacutetudiants et UVs

key deacutesigne des cleacutes candidates ici toutes les cleacutes ne sont composeacutees que dun seul attributlocal key deacutesigne une cleacute localeun semestre est de la forme PYYYY ou AYYYY (ougrave YYYY deacutesigneacute une anneacutee sur 4 chiffre) exemple A2013 P2014

Rappel Notion de cleacute locale dans classes dassociation (cf p49)

Effectuez le modegravele conceptuel en UML de ce problegraveme

Indices

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans deacutedieacuteeles donneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition

[ ]solution ndeg4 [ ] p56

En mobilisant les regravegles adeacutequates proposer un modegravele logique de donneacutees correspondant en relationnel Le repeacuterage des domaines et des cleacutes est obligatoire

[ ]solution ndeg5 [ ] p57

Dessiner des tableaux remplis avec les donneacutees fournies en exemple afin de montrer que le modegravele fonctionne selon le besoin exprimeacute initialement On pourra mettre le premier mot seulement des descriptions pour gagner du temps

[ ]solution ndeg6 [ ] p57

Exercice Super-heacuteros relationnels I

32

-

-

Question

3 Exercice Super-heacuteros relationnels I[20 min]

La gamme de super-heacuteros GARVEL veut reacutealiser la base de donneacutees de leurs figurines articuleacutees La socieacuteteacute a fait reacutealiser un modegravele UML qui doit servir de point de deacutepart agrave la mise en œuvre

Modegravele UML Figurines GARVEL

Question

4 Exercice Objets Numeacuteriques Libres[30 min]

Lassociation ONL (Objets Numeacuteriques Libres) est une association de promotion des logiciels libres Elle souhaite exposer sur un site Internet une liste de logiciels libres Ce site sera adosseacute agrave une base de donneacutees relationnelle ou relationnel-objet La premiegravere eacutetape de sa deacutemarche est de reacutealiser un modegravele conceptuel repreacutesentant ce quelle souhaite faire

La base de donneacutees permet de geacuterer des applicationsLes applications sont identifieacutees par leur nom (LibreOffice Gimp) et leur version (10 21) et comportent une description courte et une URL Tous les attributs sont obligatoires Chaque application a une URL uniqueLa base de donneacutees permet de geacuterer des librairies

Traduire le scheacutema en modegravele logique relationnel ( )MLD1

On choisira obligatoirement les cleacutes primaires parmi celles neacutecessitant le plus petit nombre de bits possible pour leur codage

[ ]solution ndeg7 [ ] p57

Transformer le modegravele UML en modegravele relationnel (justifier les passages non triviaux en particulier la relation dheacuteritage)

[ ]solution ndeg8 [ ] p58

Exercice Objets Numeacuteriques Libres

33

-

-

-

-

-

-

-

-

-

-

-

-

Les librairies sont des logiciels mais pas des applications Elles ont les mecircmes attributs que les applications (nom version description courte URL) mais les URL ne sont pas neacutecessairement uniques Les applications peuvent deacutependre de librairies ou dautres applications et les librairies peuvent deacutependre dautres librairies (mais pas dune application)La base de donneacutees permet de geacuterer des composantsLes composants sont inteacutegreacutes agrave une application ou librairie Les composants ont un code interne agrave lapplication ou la librairie quil servent une version et une description courte et une URL Le code et le numeacutero de version permettent didentifier localement le composant au sein de la librairie ou de lapplication la description courte et lURL sont optionnellesLa base de donneacutees permet de geacuterer des licencesLes applications librairies et composants sont attacheacutes agrave une ou plusieurs licences identifieacutees par leur nom (GPL MPL) leur version et leur langue et comportant le texte inteacutegral de la licence Les versions des logiciels et licences sont de type numeacutero de licence majeur point numeacutero de licence mineur comme 10 ou 22La base de donneacutees permet de geacuterer des cateacutegoriesChaque logiciel est rangeacute dans une cateacutegorie principale et plusieurs cateacutegories secondaires Exemple de cateacutegories bureautique dessin multimeacutedia physique

Exemple (factice) de donneacutees

Applications

Scenari 41 une chaicircne eacuteditoriale XML httpscenariorg deacutepend de Libreoffice 43 et de ImageMagick 68Libreoffice 43 une suite bureautique WYSIWYG httplibreofficeorg

Librairie

ImageMagick 68 permet de creacuteer de convertir de modifier et dafficher des images http imagemagickorg

Composant

impng 02 est un composant de ImageMagick 68 permet de compresser une image au format PNG

Toutes ces applications librairies et composants sont disponibles sous une licence LGPL 30 et GPL 30 franccedilaisesToutes ces applications et librairies sont rangeacutees dans la cateacutegorie principale document Scenari est rangeacute dans la cateacutegorie secondaire Eacutedition WYSIWYM Libreoffice dans la cateacutegorie secondaire Bureautique ImageMagick dans la cateacutegorie secondaire Multimeacutedia

Question

Reacutealiser un MCD en UML[ ]solution ndeg9 [ ] p58

Devoirs

34

1 Exercice Arbre de scegravene 3D[30 minutes]

On souhaite pouvoir geacuterer les diffeacuterents eacuteleacutements composant des scegravenes 3D dans une base de donneacutees Une scegravene contient des objets qui eux-mecircmes peuvent appartenir agrave plusieurs scegravenes (au moins une) mais il ne peut y avoir plusieurs fois le mecircme objet dans une mecircme scegravene Dans chaque scegravene les objets peuvent ecirctre visibles ou invisibles Les scegravenes et les objets sont identifieacutes de maniegravere unique par un nom Une scegravene peut ecirctre active ou inactive Un objet a comme proprieacuteteacute une position dans lespace repreacutesenteacutee par un vecteur de reacuteels agrave trois composantes (x y z) Les objets sont organiseacutes de maniegravere hieacuterarchique un objet peut ecirctre parent de plusieurs objets et chaque objet peut avoir au plus un parent Des scripts peuvent ecirctre associeacutes agrave un objet ou agrave une scegravene (agrave lun ou agrave lautre mais pas aux deux) Un script est identifieacute de maniegravere unique par un nom et possegravede eacutegalement un attribut permettant de connaicirctre son eacutetat (actif ou inactif) Un personnage est un objet particulier qui possegravede des animations Une animation est relative agrave un personnage et est identifieacutee de maniegravere locale par un nom Agrave un objet est associeacute un maillage et celui-ci peut ecirctre utiliseacute par plusieurs objets Un maillage est identifieacute de maniegravere unique par un nom et est composeacute de plusieurs eacuteleacutements Chaque eacuteleacutement est relatif agrave un maillage et est identifieacute de maniegravere locale par un numeacutero Il existe exactement trois types deacuteleacutement des nœuds des arrecirctes et des faces Une face est deacutelimiteacutee par trois arrecirctes et chaque arrecircte est deacutelimiteacutee par deux nœuds Plusieurs arrecirctes peuvent partager un mecircme nœud et plusieurs faces peuvent partager une mecircme arrecircte Afin deacutevaluer la complexiteacute dune scegravene on souhaite pouvoir calculer le nombre de faces afficheacutees pour une scegravene donneacutee (cest-agrave-dire la somme du nombre de faces du maillage associeacute aux objets visibles de la scegravene) Un maillage possegravede plusieurs mateacuteriaux identifieacutes de maniegravere unique par un nom Un mateacuteriau peut ecirctre associeacute agrave plusieurs maillages Un mateacuteriau est caracteacuteriseacute par une couleur deacutefinie par un vecteur dentiers agrave quatre composantes rouge vert bleu alpha Un mateacuteriau peut posseacuteder une texture et celle-ci peut ecirctre utiliseacutee par plusieurs mateacuteriaux Une texture est identifieacutee de maniegravere unique par un nom et possegravede comme attribut une image

Question 1

Question 2

DevoirsIII

Proposez une clarification de ce problegraveme On pourra reclasser les informations par grande cateacutegorie scegravene objets scripts

Eacutetablissez un modegravele conceptuel en UML de ce problegraveme

Compleacutement Exercices de modeacutelisation suppleacutementaire

35

1 Exercice Appartements agrave louer[30 min]

Une agence dimmobilier (ventes et locations) veut geacuterer son parc dappartements dans une base de donneacutees Chaque appartement possegravede plusieurs piegraveces qui peuvent ecirctre des piegraveces dhabitation des piegraveces de rangement ou des commoditeacutes

Chaque piegravece a une superficie un nombre de prises eacutelectriques et des meubles Pour ces derniers on veut enregistrer le nom du modegravele et le type (chaise lit four etc) Rien nempecircche quune piegravece comporte plusieurs meubles identiques (par exemple plusieurs chaises PIN IQUEA) Les piegraveces dhabitation ont une ou plusieurs fenecirctres les piegraveces de rangement ont une ou plusieurs eacutetagegraveres et une surface de rangement utile totale On veut aussi savoir dans quelles piegraveces de rangement se situent les tableaux eacutelectriques de lappartement Finalement les piegraveces commoditeacutes peuvent ecirctre de trois types cuisine toilette ou salle de bain

Lagence veut aussi enregistrer les portes entre les diffeacuterentes piegraveces Une porte peut ecirctre agrave simple battant double battant coulissante ou une simple ouverture

Chaque appartement a une adresse une superficie totale (qui est la somme des superficies des piegraveces) et un type qui est la lettre T suivie du nombre de piegraveces dhabitation de lappartement Pour un appartement donneacute chaque piegravece est identifieacutee par un numeacutero (commenccedilant au numeacutero 1)

Lagence veut eacutegalement enregistrer le quartier ougrave se trouve lappartement auquel est lieacute un prix par megravetre carreacute Finalement elle veut garder un historique de lhistoire de lappartement les peacuteriodes pour lesquelles il est libre occupeacute en travaux ou vendu

Question

2 Exercice Objectifs[40 min]

Vous prenez la preacutesidence de lassociation Objectifs dont lobjet est daider ses eacutetudiants membres agrave mener des projets dans le cadre de leurs eacutetudes

Compleacutement Exercices de modeacutelisation suppleacutementaire

IV

Reacutealisez le diagramme UML reacutepondant aux besoins de cette agence[ ]solution ndeg10 [ ] p59

Exercice Objectifs

36

- - -

-

-

- - -

Vous constatez en arrivant dans lassociation que personne ne sait exactement quels sont les projets en cours ni qui fait quoi dans les projets Vous ne parvenez pas non plus agrave obtenir une liste exacte des partenaires sur lesquels lassociation peut compter La seule chose sur laquelle vous parvenez agrave mettre la main est un fichier tableur vaguement agrave jour

Vous deacutecidez quil est plus que temps de mettre en place une base de donneacutees afin dassurer la bonne gestion des informations les plus importantes pour lassociation Vous vous attachez pour cela agrave reacutealiser une analyse des besoins

Analysez les documents ci-apregraves

Etat des projets

Eacutetat des projets de lassociation Objectifs

Recueil de besoins

Agrave partir de leacutetude du fonctionnement actuel de lassociation vous relevez les choses importantes agrave geacuterer suivantes

Les membres de lassociation geacuteneacuteralement identifieacutes par leur preacutenomLes projets geacutereacutes par lassociation avec des dates de deacutebut et de fin preacutecises et un chef de projetLe deacutetail des tacircches de chaque projet avec leurs dates de deacutebut et de fin aussi et la liste de tous les membres qui y participentLa liste des partenaires des projets avec leur rocircle preacutecis pour chacun des projets auxquels ils participent

Afin de mieux geacuterer les attributions des projets il serait eacutegalement inteacuteressant de creacuteer une liste des speacutecialiteacutes correspondant agrave ce qui ce fait dans lassociation et daffecter une speacutecialiteacute agrave chaque membre ainsi quune agrave chaque projet pour voir si ce sont bien les membres les mieux adapteacutes qui travaille sur les projets

Recueil de donneacutees

Les discussions avec les anciens membres de lassociation vous apprennent les choses suivantes

Lassociation a termineacute de geacuterer les trois projets Comeacutedie Musicale geacutereacutee par Nathalie sur les trois premiers mois du semestre dautomne 1001 Science en fecircte geacutereacutee par Pierre sur tout le semestre de printemps 1003 et Nuit du picolo geacutereacutee par Julien en novembre 1001Les speacutecialiteacutes recenseacutees pour le moment sont Ville Universiteacute Sport Entreprise Culture InternationalIl faut au moins dix membres agrave lassociation (sinon elle ferme) recruter ceux qui manquentAidez lassociation agrave diviser ses projets en tacircches

Exercice Objectifs

37

- Les partenaires suivants aident ou ont aideacute lassociation la mairie pour la comeacutedie musicale et la science en fecircte qui apporte un soutien financier le ministegravere de la culture qui apporte son soutien logistique agrave la science en fecircte lassociation des commerccedilants de la ville qui apporte son soutien publicitaire agrave la comeacutedie musicale 1664 qui offre ses biegraveres agrave moitieacute prix pour la nuit du Picolo

Question 1

Question 2

Question 3

Afin de preacuteparer une analyse des besoins sommaire listez les donneacutees que vous devrez geacuterer agrave laide des documents et recueils de discussion agrave votre disposition Faites des hypothegraveses lorsque les donneacutees sont incomplegravetes ou incoheacuterentes

[ ]solution ndeg11 [ ] p59

Reacutealiser le MCD en UML et en E-A agrave partir des donneacutees preacutepareacutees dans la question preacuteceacutedente[ ]solution ndeg12 [ ] p60

Reacutealiser le MLD en relationnel en traduisant votre MCD[ ]solution ndeg13 [ ] p61

Contenus annexes

38Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

- - -

gt Attributs

Un attribut est une information eacuteleacutementaire qui caracteacuterise une classe et dont la valeur deacutepend de lobjet instancieacute

Le domaine des valeurs que peut prendre lattribut est fixeacute a prioriUn attribut est typeacute

Il peut prendre plusieurs valeurs distinctes dans son domaineUn attribut peut ecirctre multivalueacute Sa valeur alors est une fonction sur dautres attributs de la classeUn attribut peut ecirctre deacuteriveacute

(ou composite) Il joue alors le rocircle dun groupe dattributs (par Un attribut peut ecirctre composeacuteexemple une adresse peut ecirctre un attribut composeacute des attributs numeacutero type de voie nom de la voie) Cette notion renvoie agrave la notion de variable de type dans les langages de Record

programmation classiques

En UML on preacutefegravere lusage de meacutethodes aux attributs deacuteriveacutes On utilisera toujours des meacutethodes degraves que la valeur de lattribut deacuteriveacute deacutepend dautres attributs exteacuterieurs agrave sa classeEn UML on preacutefegravere lusage de compositions aux attributs composeacutes On utilisera toujours des compositions pour les attributs composeacutes et multivalueacutes

1 attributtype2 attribut_multivalueacute[nbMinValeursnbMaxValeurs]type3 attribut_deacuteriveacutetype4 attribut_composeacute5   - sous-attribut1type6   - sous-attribut2type7   -

Contenus annexes

Deacutefinition Attribut

Attention On utilise peu les attributs deacuteriveacutes et composeacutes en UML

Syntaxe

attributtype

attribut_multivalueacute[nbMinValeursnbMaxValeurs]type

attribut_deacuteriveacutetype

attribut_composeacute

  - sous-attribut1type

  - sous-attribut2type

  -

Contenus annexes

39Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Repreacutesentation dattributs en UML

Dans cet exemple les attributs Nom Preacutenom sont de type lun de 20 caractegraveres et lautre de 10 stringtandis que DateNaissance est de type et Age de type Preacutenom est un attribut multivalueacute ici date integerune personne peut avoir de 1 agrave 3 preacutenoms Age est un attribut deacuteriveacute il est calculeacute par une fonction sur DateNaissance

Meacutethodes (cf p39)

Composition (cf p5)

gt Meacutethodes

Une meacutethode (ou opeacuteration) est une fonction associeacutee agrave une classe dobjet qui permet dagir sur les objets de la classe ou qui permet agrave ces objets de renvoyer des valeurs (calculeacutees en fonction de paramegravetres)

1 methode(paramegravetres)type

Pour la modeacutelisation des bases de donneacutees les meacutethodes sont surtout utiliseacutees pour repreacutesenter des donneacutees calculeacutees (agrave linstar des attributs deacuteriveacutees) ou pour mettre en exergue des fonctions importantes du systegraveme cible Seules les meacutethodes les plus importantes sont repreacutesenteacutees lapproche est moins systeacutematique quen modeacutelisation objet par exemple

Lors de la transformation du modegravele conceptuel UML en modegravele logique relationnel les meacutethodes ne Leur repeacuterage au niveau conceptuel sert donc surtout daide-seront geacuteneacuteralement pas impleacutementeacutees

meacutemoire pour limpleacutementation au niveau applicatif

Exemple La classe Personne

Compleacutement Voir aussi

Deacutefinition Meacutethode

Syntaxe

Remarque Meacutethodes et modeacutelisation de BD

Remarque Meacutethodes relationnel relationnel-objet

methode(paramegravetres)type

Contenus annexes

40Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Au contraire un modegravele logique relationnel-objet permettra limpleacutementation de meacutethodes directement associeacutees agrave des tables Leur repeacuterage au niveau conceptuel est donc encore plus important

Transformation des meacutethodes par des vues (cf p40)

gt Transformation des meacutethodes par des vues

Lorsquune meacutethode est speacutecifieacutee sur un diagramme UML pour une classe C si cette meacutethode est une fonction relationnelle (elle renvoie une unique valeur et elle peut ecirctre reacutesolue par une requecircte SQL) alors on creacutee une vue qui reprend les attributs de la classe C et ajoute des colonnes calculeacutees pour les meacutethodes

Les attributs deacuteriveacutes eacutetant apparenteacutes agrave des meacutethodes ils peuvent eacutegalement ecirctre geacutereacutes par des vues

gt Classe dassociation

On utilise la notation des classes dassociation lorsque lon souhaite ajouter des proprieacuteteacutes agrave une association

Notation dune classe dassociation en UML

On reacuteserve en geacuteneacuteral les classes dassociation aux associations NM

Il est toujours possible de reacuteduire une classe dassociation sur une association 1N en migrant ses attributs sur la classe cocircteacute N et cest en geacuteneacuteral plus lisible ainsi

Compleacutement

Meacutethode

Remarque Attributs deacuteriveacutes

Deacutefinition Classe dassociation

Syntaxe Notation dune classe dassociation en UML

Meacutethode

Contenus annexes

41Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

-

Emplois

Selon le standard UML une classe dassociation est une classe et agrave ce titre elle peut ecirctre mobiliseacutee dans dautres associations ou dans des heacuteritages Nous deacuteconseillons neacuteanmoins ces notations qui ont tendance agrave complexifier la lecture et la transformation du diagramme

Nous conseillons donc de ne jamais associer une classe dassociation

gt Transformation des attributs

Pour chaque attribut eacuteleacutementaire et monovalueacute dune classe

on creacutee un attribut correspondant

Attribut

Classe1(ab)

Pour chaque attribut composite comprenant N sous-attributs dune classe

on creacutee N attributs correspondantsdont les noms sont la concateacutenation du nom de lattribut composite avec celui du sous-attribut

Exemple Exemple de classe dassociation

Conseil

Meacutethode Attributs simples

Meacutethode Attributs composites

Contenus annexes

42Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- - - -

Attribut composeacute

Classe1(ab_b1b_b2)

Pour chaque attribut multivalueacute b dune classe C

on creacutee une nouvelle relation RBqui comprend un attribut monovalueacute correspondant agrave bplus la cleacute de la relation repreacutesentant C la cleacute de RB est la concateacutenation des deux attributs

Attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Dans le cas ougrave le nombre maximum de est fini et petit on peut eacutegalement adopter la transformation b

suivante Classe1(ab1b2b3b4b5b6b7b8b9b10)

Si le nombre dattributs est infini ( ) cest impossible sil est trop grand ce nest pas souhaitableb[1]

On combine les regravegles eacutenonceacutees pour les attributs composeacutes et pour les attributs multivalueacutes

Attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Transformation des compositions (cf p42)

Meacutethode Attributs multivalueacutes

Meacutethode Attributs multivalueacutes (meacutethode alternative)

Meacutethode Attributs composeacutes multivalueacutes

Rappel Voir aussi

Contenus annexes

43Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

gt Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Compleacutement Attributs multivalueacutes et composeacutes

Contenus annexes

44Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

Rappel Voir aussi

Rappel

Meacutethode

Contenus annexes

45Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p48)

gt Transformation des associations 1N

Pour chaque association binaire de type 1N

on ajoute agrave la relation cocircteacute N une cleacute eacutetrangegravere vers la relation cocircteacute 1

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Meacutethode

Contenus annexes

46Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Association 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Contrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p46)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

R1

Compleacutement

Rappel

Meacutethode

Contenus annexes

47Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p47)

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Deacutefinition Projection

Contenus annexes

48Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Deacutefinition Projection

Contenus annexes

49Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Transformation des classes dassociation

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de lassociation NM

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Meacutethode Classe dassociation NM

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Agreacutegation

7

- - Attributs (cf p38)

Agreacutegation (cf p7)

13 Agreacutegation

Lagreacutegation est une association particuliegravere utiliseacutee pour preacuteciser une relation toutpartie (ou ensembleeacuteleacutement) on parle dassociation meacutereacuteologique

Notation de lagreacutegation en UML

La cardinaliteacute peut ecirctre exprimeacutee librement en particulier les instances de la classe Eacuteleacutement peuvent ecirctre associeacutees agrave plusieurs instances de la classe Ensemble et mecircme de plusieurs classes

Lagreacutegation garde toutes les proprieacuteteacutes dune association classique (cardinaliteacute cycle de vie etc) elle ajoute simplement une terminologie un plus preacutecise via la notion de toutpartie

14 Explicitation des associations (sens de lecture et rocircle)

Il est possible dajouter le sens de lecture du verbe caracteacuterisant lassociation sur un diagramme de classe UML afin den faciliter la lecture On ajoute pour cela un signe ou (ou un triangle noir) agrave cocircteacute du nom de lt gt

lassociation

Il est possible de preacuteciser le rocircle joueacute par une ou plusieurs des classes composant une association afin den faciliter la compreacutehension On ajoute pour cela ce rocircle agrave cocircteacute de la classe concerneacutee (parfois dans un petit encadreacute colleacute au trait de lassociation

Rocircle et sens de lecture sur une association

Rappel Voir aussi

Deacutefinition Association dagreacutegation

Syntaxe

Attention

Syntaxe Sens de lecture

Syntaxe Rocircle

Exemple

Notion de cleacute locale dans les compositions et les associations NM

8

- - -

15 Associations reacuteflexives

Une association reacuteflexive est une association qui associe une classe avec elle-mecircme

Association reacuteflexive laquo ami raquo

Lexplicitation des associations est souvent utile dans le cas des associations reacuteflexives non symeacutetrique (ou chaque objet ne joue pas le mecircme rocircle)

Une instance peut ecirctre associeacutee avec elle-mecircme dans le cas de dune association reacuteflexive

Si lon souhaite exprimer le contraire (une instance peut ecirctre associeacutee avec dautres instances de la mecircme classe mais pas avec elle-mecircme)

on ajoute une contrainte en UML (par exemple les personnes ne se marient pas avec elles-mecircmes) que lon traduira en relationnel par une contrainte du type AVEC pk fk

que lon traduira en SQL par une clause du type CHECK pk = fk

16 Notion de cleacute locale dans les compositions et les associations NM

Le concept de cleacute locale appartient au niveau conceptuel il est heacuteriteacute de lentiteacute faible du modegravele conceptuel Entiteacute-Association (eacutequivalent de la composition en UML) Dans une entiteacute faible ou une composition une cleacute de la classe composant est dite locale car elle ne permet didentifier lobjet que si lon connaicirct la classe composite

Dans certaines constructions en UML (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Deacutefinition Association reacuteflexive

Exemple

Meacutethode

Attention Auto-association dans les associations reacuteflexives

Deacutefinition

Attention

Classe dassociation avec cleacute locale

9

Dans une associations NM on peut avoir des (vraies) cleacutes ou des cleacutes locales En revanche dans une composition on na que des cleacutes locales en effet si le composant est identifiable indeacutependamment de son composite cest en geacuteneacuteral quil a une vie propre et donc que lon est pas en preacutesence dune composition

17 Classe dassociation avec cleacute locale

Classe dassociation (cf p40)

Dans lexemple suivant chaque personne peut avoir un emploi dans plusieurs socieacuteteacutes mais elle ne peut pas avoir plusieurs emplois dans une mecircme socieacuteteacute

Emplois

La transformation en relationnelle est coheacuterente avec cette contrainte

1 Socieacuteteacute()2 Personne()3 Emploi(personne=gtPersonne societe=gtSociete postestring salaireinteger quotitenumeric(12))

La speacutecification dune cleacute locale dans emploi par exemple ici le poste permet de lever cette contrainte lorsquon le souhaite en permettant didentifier chaque instance de lassociation ici lemploi dune personne par sa socieacuteteacute

Attention

Rappel

Contrainte inheacuterente agrave la relation NM

Meacutethode Inteacuterecirct de la cleacute locale

Socieacuteteacute()

Personne()

Emploi(personne=gtPersonne societe=gtSociete postestring salaireinteger

quotitenumeric(12))

Associations ternaires

10

La transformation en relationnelle permettra de maintenir la modeacutelisation en ajoutant la cleacute locale agrave la cleacute initiale

1 Socieacuteteacute()2 Personne()3 Emploi(personne=gtPersonne societe=gtSociete postestring salaireinteger quotitenumeric(72))

18 Associations ternaires

Notation dune association ternaire

Il est toujours possible de reacuteeacutecrire une association ternaire avec trois associations binaires en transformant lassociation en classe

Syntaxe

Conseil Ne pas abuser des associations ternaires

Socieacuteteacute()

Personne()

Emploi(personne=gtPersonne societe=gtSociete postestring salaireinteger

quotitenumeric(72))

Passage UML-Relationnel Associations avanceacutees

11

En pratique on nutilise jamais en UML dassociation de degreacute supeacuterieur agrave 3

2 Passage UML-Relationnel Associations avanceacuteesObjectifs

Savoir faire le passage dun scheacutema conceptuel UML agrave un scheacutema relationnel dans tous les cas

Reconnaicirctre les cas de transformation qui se traitent toujours de la mecircme faccedilon et ceux qui neacutecessite une modeacutelisation compleacutementaire

21 Trousseau de cleacutes

En UML et en relationnel il existe plusieurs termes mobilisant le mot laquo cleacute raquo le seul concept qui est commun est le concept de Tous les autres sont speacutecifiques au niveau conceptuel ou relationnelcleacute

Cleacute (key)

Cleacute locale (local key)

Cleacute (key)

Cleacute candidate (candidate key)

Cleacute primaire (primary key) et Cleacute alternative (alternate key)

Cleacute artificielle (surrogate key) et Cleacute naturelle (natural key business key)

Cleacute eacutetrangegravere (foreign key)

Conseil Pas de degreacute supeacuterieur agrave 3

Attention

Rappel Concept commun au niveau UML et relationnel

Rappel Concept speacutecifique au niveau UML

Rappel Concepts speacutecifiques au niveau relationnel

Transformation des compositions

12

- -

Deacutefinition des cleacutes en relationnel

22 Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Transformation des agreacutegations

13

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

23 Transformation des agreacutegations

Les associations de type agreacutegation se traitent de la mecircme faccedilon que les associations classiques

Agreacutegation 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Compleacutement Attributs multivalueacutes et composeacutes

Rappel Voir aussi

Rappel Agreacutegation

Transformation des classes dassociation avec cleacute locale

14

- -

Agreacutegation NM

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2)

24 Transformation des classes dassociation avec cleacute locale

Les attributs de la classe dassociation

sont ajouteacutes agrave la relation issue de lassociation NM la cleacute locale de la classe dassociation est concateacuteneacutee aux cleacutes eacutetrangegraveres composant deacutejagrave la cleacute primaire de la relation dassociation

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Meacutethode Classe dassociation NM

Exercice

15

25 Correspondance entre UML et relationnel

Passsage UML vers Relationnel

Exercice

16

26 ExerciceQuel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

[ ]solution ndeg2 [ ] p53

Exercice

17

27 ExerciceSoit le scheacutema UML suivant

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

[ ]solution ndeg3 [ ] p54

Modeacutelisation avanceacutee des associations 11 en relationnel

18

-

- -

-

-

3 Modeacutelisation avanceacutee des associations 11 en relationnelObjectifs

Savoir faire le passage dun scheacutema conceptuel UML agrave un scheacutema relationnel

Connaicirctre les choix possibles pour le cas de lassociation 11 et savoir faire le meilleur choix

Il existe des formulations conceptuelles en UML qui sont plus deacutelicates agrave traduire au niveau logique en relationnel comme lassociation 11 Ces cas requiegraverent un choix eacuteclaireacute de la part du concepteur

31 Transformation des associations 11 (approche geacuteneacuterale)

Il existe deux solutions pour transformer une association 11

Avec deux relations on traite lassociation 11 comme une association 1N puis lon ajoute une contrainte UNIQUE sur la cleacute eacutetrangegravere pour limiter la cardinaliteacute maximale agrave 1 Avec une seule relation on fusionne les deux classes en une seule relation

Association 11

Une des deux relations est choisie pour porter la cleacute eacutetrangegravere on ajoute les contraintes ou (cleacute candidate) sur la cleacute eacutetrangegravere et si neacutecessaire une UNIQUE KEY

contrainte imposant linstanciation simultaneacutee des deux relations

Classe1(abc=gtClasse2) avec c UNIQUE ou KEY

Classe2(cd)

ou

Classe1(ab)

Classe2(cda=gtClasse1) avec a UNIQUE ou KEY

On creacuteeacute une seule relation contenant lensemble des attributs des deux classes

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Meacutethode Avec deux relations (cleacute eacutetrangegravere)

Meacutethode Avec une relation (fusion)

Transformation des associations 1111

19

- -

- - - - - -

- on choisit une cleacute parmi les cleacutes candidates

Classe12(abcd) avec c UNIQUE ou KEY

ou

Classe21(cdab) avec a UNIQUE ou KEY

Ce choix entre les deux meacutethodes sera conduit par une appreacuteciation du rapport entre

La complexiteacute introduite par le fait davoir deux relations lagrave ou une suffitLa pertinence de la seacuteparation des deux relations dun point de vue seacutemantiqueLes pertes de performance dues agrave leacuteclatement des relationsLes pertes de performance dues au fait davoir une grande relationLes questions de seacutecuriteacute et de sucircreteacute factoriseacutees ou non au niveau des deux relations

Dans le cas dune association 1111 il faudra ajouter une contrainte compleacutementaire

Transformation des associations 1111 (cf p19)

32 Transformation des associations 1111

Le plus souvent cest meacutethode par des relations qui est la plus adapteacutee agrave ce casfusionLorsquelle ne lest pas et que lon choisit deux relations il faut ajouter une contrainte dynamique qui controcirclera que les deux relations sont bien toujours instancieacutees ensembles Notons que la cleacute eacutetrangegravere peut ecirctre choisie comme cleacute primaire

Association 11

Classe12(abcd) avec c KEY

ou

Classe21(cdab) avec a KEY

ou

Classe1(abc=gtClasse2) avec c KEY

Classe2(cd)

Contrainte PROJECTION(Classe1c) = PROJECTION(Classe2c)

ou

Classe1(ab)

Remarque Fusion des relations dans le cas de la traduction de lassociation 11

Compleacutement

Meacutethode Association 1111

Transformation des associations 0111

20

-

-

-

-

Classe2(cda=gtClasse1) avec a KEY

Contrainte PROJECTION(Classe1a) = PROJECTION(Classe2a)

La contrainte dynamique exprimeacutee ici suit le mecircme principe que pour les association 1NContrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p44)

33 Transformation des associations 0111

Le plus souvent cest la meacutethode par les deux relations qui est la plus adapteacutee on choisira toujours la relation cocircteacute 01 pour ecirctre reacutefeacuterenccedilante

Il est possible dutiliser la fusion dans ce cas les cleacutes cocircteacute 01 deviennent des attributs il ne UNIQUE

peuvent plus ecirctre cleacutes pouvant ecirctre NULL

Association 011

Classe1(abc=gtClasse2) avec c KEY

Classe2(cd)

ou

Classe12(cdab) avec a UNIQUE

34 Transformation des associations 0101

On choisit la solution avec deux relations dun cocircteacute ou de lautre la cleacute eacutetrangegravere est associeacute agrave la contrainte ce nest pas une cleacute car elle peut ecirctre nulleUNIQUE

Il nest pas souhaitable de choisir la fusion lune des deux relations pouvant ecirctre nulle on ne pourrait plus trouver de cleacute naturelle

Association 0101

Classe1(abc=gtClasse2) avec c UNIQUE

Classe2(cd)

ou

Compleacutement Contrainte dynamique

Meacutethode Association 0111

Meacutethode Association 0101

Exemple de choix pour une relation 11

21

-

- -

-

-

Classe1(ab)

Classe2(cda=gtClasse1) avec a UNIQUE

35 Exemple de choix pour une relation 11

Soit deux entiteacutes homme et femme et une association mariage de cardinaliteacute 1111 entre ces deux entiteacutes (hommes et femmes sont donc obligatoirement marieacutes)Les entiteacutes homme et femme sont identifieacutees par un attribut nom (dans ce modegravele chaque personne a un nom unique on pourrait remplacer le nom par un identifiant comme le numeacutero de seacutecuriteacute social ou par une cleacute artificielle pour ecirctre plus proche de la reacutealiteacute)

Bien que de type 1111 le choix de la fusion nest pas tregraves opportun car il sagit bien dobjets distincts que lon veut modeacuteliser

On choisira donc plutocirct la repreacutesentation avec deux relationsLa cleacute eacutetrangegravere pourra ecirctre du cocircteacute homme ou femme mecircme si la pratique dominante nous incite agrave la mettre du cocircteacute femmeOn pourra eacutegalement deacutecider de prendre la cleacute eacutetrangegravere comme cleacute primaire

1 homme (nom)2 femme (mariage=gthomme nom) avec nom KEY3 Contrainte PROJ(hommenom) = PROJ(femmemariage)

Si lassociation avait eacuteteacute de cardinaliteacute 0101 (certains hommes et femmes ne sont pas marieacutes) un choix similaire se serait imposeacute avec limpossibiliteacute de choisir la cleacute eacutetrangegravere comme cleacute primaire celle-ci pouvant ecirctre nulle et neacutetant donc plus candidate

1 homme (nom)2 femme (nom mariage=gthomme) avec mariage UNIQUE

4 Autres eacuteleacutements utiles en UML packages et steacutereacuteotypesObjectifs

Maicirctriser le diagramme de classe UML dans le cas de la conception de BD

41 Paquetages

Les paquetages (plus communeacutement appeleacutes ) sont des eacuteleacutements servant agrave organiser un modegravelepackage

Ils sont particuliegraverement utiles degraves que le modegravele comporte de nombreuses classes et que celles-ci peuvent ecirctre trieacutees selon plusieurs aspects structurants

Exemple

Exemple

Deacutefinition Package

homme (nom)

femme (mariage=gthomme nom) avec nom KEY

Contrainte PROJ(hommenom) = PROJ(femmemariage)

homme (nom)

femme (nom mariage=gthomme) avec mariage UNIQUE

Steacutereacuteotype

22

Notation des paquetages en UML

Exemple dutilisation des packages

On repreacutesente chaque classe au sein dun Il est alors possible de faire une preacutesentation globale du packagemodegravele (tous les ) partielle (une partie des ) ou centreacutee sur un seul packages packages package

Pour une repreacutesentation partielle ou centreacutee sur un on repreacutesente les concerneacutes avec leurs package packagesclasses propres ainsi que toutes les classes lieacutees des autres packages (et seulement celles-ci)

Preacutesentation partielle du modegravele centreacutee sur un package

Syntaxe

Exemple

Meacutethode

Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt

23

42 Steacutereacuteotype

Un steacutereacuteotype UML est une syntaxe permettant dajouter de la seacutemantique agrave la modeacutelisation des classes Il permet de deacutefinir des afin de regrouper conceptuellement un ensemble de classes (agrave linstar types de classedune classe qui permet de regrouper conceptuellement un ensemble dobjets)

Cest une meacutecanique de meacuteta-modeacutelisation elle permet deacutetendre le meacuteta-modegravele UML cest agrave dire le modegravele conceptuel du modegravele conceptuel

Un meacuteta-modegravele est le modegravele dun modegravele Par exemple le meacuteta-modegravele UML comprend les concepts de classe attribut association cardinaliteacute composition agreacutegation contraintes annotations On mobilise ces concepts (on les instancie) pour exprimer un modegravele particulier suivant le formalisme UML

Les steacutereacuteotypes permettent donc dajouter au meacuteta-modegravele UML standard celui que tout le monde utilise des concepts locaux pour enrichir le langage de modeacutelisation que lon utilise pour reacutealiser des modegraveles

Notation dun steacutereacuteotype en UML

Un steacutereacuteotype speacutecifique enrichit le meacuteta-modegravele UML mais selon une seacutemantique qui est propre agrave celui qui la poseacute non standard donc La conseacutequence est que pour un tiers linterpreacutetation du steacutereacuteotype nest plus normaliseacutee et sera potentiellement plus facilement erroneacutee Il convient donc de ne pas abuser de cette meacutecanique

Deux ou trois steacutereacuteotypes speacutecifiques correctement deacutefinis sont faciles agrave transmettre plusieurs dizaines repreacutesenteraient un nouveau langage complet agrave apprendre pour le lecteur du modegravele

Il existe des steacutereacuteotypes fournit en standard par UML ou communeacutement utiliseacutes par les modeacutelisateurs Lavantage est quil seront compris plus largement au mecircme titre que le reste du meacuteta-modegravele (ils ont une valeur de standard)

43 Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt

Deacutefinition Steacutereacuteotype UML

Deacutefinition Meacuteta-modegravele

Syntaxe

Conseil Steacutereacuteotypes speacutecifiques et steacutereacuteotypes standard

Syntaxe

Type utilisateurs steacutereacuteotype ltltdataTypegtgt

24

Steacutereacuteotype UML permettant dexprimer une eacutenumeacuteration

Exemple de modeacutelisation UML deacutenumeacuteration

44 Type utilisateurs steacutereacuteotype ltltdataTypegtgt

Les types utilisateurs permettent de deacutefinir des types complexes propres en extension des types primaires (entier chaicircne date)

Steacutereacuteotype dataType

Steacutereacuteotype dataType (exemple)

Cette modeacutelisation est eacutequivalente agrave la modeacutelisation des attributs composeacutes directement dans la classe principale Cest une repreacutesentation plus standard en UML

Exemple

Syntaxe

Exemple

Meacutethode Attributs composeacutes

Synthegravese sur la modalisation UML et relationnelle

25

Quelques eacuteleacutements de stylistique UML

26

-

- -

-

-

-

- - -

- - - -

1

2

3

5 Synthegravese sur la modalisation UML et relationnelle51 Quelques eacuteleacutements de stylistique UML

Toutes les associations doivent ecirctre nommeacutees (sauf composition heacuteritage agreacutegation)Ne pas utiliser de nom geacuteneacuterique pour les Classes comme Entiteacute Classe Objet TrucEacuteviter les noms geacuteneacuteriques pour les associations (comme est associeacute agrave)Attention au sens des compositions et agreacutegation le losange est cocircteacute ensemble et noubliez pas les cardinaliteacutes notamment cocircteacute parties

Nutilisez pas le souligneacute ni les en UML pour identifier les cleacutes preacutefeacuterez la contrainte keyPreacutefeacuterez lheacuteritage aux booleacuteens de typage en UMLLes attributs deacuteriveacutes sont reacuteserveacutes aux deacuterivations simples (des attributs de la mecircme classe) si cest plus complexe preacutefeacuterez des meacutethodes (et dans le doute preacutecisez les modes de calcul sur le scheacutema ou dans une note agrave part)Donnez des exemples de contenu lorsque ce nest pas eacutevident (lorsque le couple nom dattribut et type ne permet pas de faccedilon eacutevidente de comprendre de quoi lon parle)Inutile de deacuteclarer le type booleacuteen en UML utilisez-le directement comme un type de donneacutees connu

Si tous vos heacuteritages sont exclusifs notez-le agrave part pour alleacuteger votre scheacutema (et eacuteviter labondance de XOR)

52 Attention aux cleacutes artificielles

en UML on ne pose jamais de cleacutes artificiellesen relationnel on pose rarement des cleacute artificielles sauf dans le cas de cleacutes eacutetrangegraveres vraiment trop compliqueacuteesen SQL on peut poser des cleacutes artificielles si on a une bonne raison (ce nest donc pas systeacutematique et cest agrave justifier)

On najoutera pas de cleacute artificielle en UML au moment de la modeacutelisation conceptuelle des donneacutees

Formellement en UML la notion de cleacute nexiste pas (contrairement agrave l ) elle est ajouteacutee par les E-A

pratiquants des BD

Logiquement on a pas besoin de cette notion en UML les cleacutes artificielles servent en relationnel et dans certains cas uniquementPratiquement cela peut conduire agrave des situations absurdes (comme enlever au niveau logique des cleacutes artificielles ajouteacutees au niveau conceptuel)

Attention

Conseil

Compleacutement

Fondamental

Cleacutes artificielles et niveau conceptuel

Bibliographie commenteacutee sur la modeacutelisation UML

27

-

-

- -

-

- -

-

-

3

4

5

si on fait du non-relationnel on ne doit pas ajouter de cleacutes artificielles dans certains cas (limbrication typiquement) cela arrive mecircme en relationnel avec la transformation de lheacuteritage (dans certains cas toujours)

Meacutethodologiquement il faut se concentrer agrave chaque phase sur ce qui est important donc au moment du MCD on traduit les besoins on repegravere les contraintes explicites (cleacute uniciteacute non nulliteacute) sans se preacuteoccuper de ce qui sera rendu neacutecessaire par la suite par la modeacutelisation relationnelle (les cleacutes eacutetrangegraveres par exemple) ou limpleacutementation (loptimisation par exemple) Agrave chaque jour suffit sa peine Peacutedagogiquement enfin les deacutebutants ont tendance (agrave cause des environnements de conception graphique comme phpMyAdmin notamment) agrave systeacutematiser les cleacutes artificielles en SQL (on pourrait en discuter) mais eacutegalement agrave ne pas faire le travail de recherche des cleacutes naturelles (au niveau relationnel notamment ce qui est une faute de modeacutelisation) Donc au plus tard on fait intervenir les cleacutes artificielles au plus on a une chance de penser aux cleacutes naturelles

Soit le modegravele relationnel suivant

1 Etu (id numEtu) avec numEtu cleacute 2 UV (id codeUv) avec codeUv cleacute3 Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

La question qui permet dafficher la liste des eacutetudiants (numEtu) avec leurs UVs (codeUv) neacutecessite une jointure des cleacutes artificielles Un modegravele sans ces cleacutes artificielles aurait eacuteteacute plus performant pour agrave causereacutepondre agrave cette question puisque toutes les informations se trouvent dans la relation Inscriptions

1 Etu (numEtu) 2 UV (codeUv) 3 Inscriptions (uv=gtUV etu=gtEtu)

Ne soyez pas systeacutematiqueIl est en effet freacutequent dans un projet reacuteel dadopter des cleacutes artificielles presque systeacutematiquement vous pourrez le faire en connaissance de cause quand vous aurez bien compris pourquoi cest inteacuteressant et quand ccedila ne lest pasLes cleacutes artificielles sont inteacuteressantes pour autre chose que les performances (leacutevolutiviteacute par exemple choisissez-les quand vous savez pourquoi)Les cleacutes artificielles ne dispensent pas de rechercher les cleacutes naturelles Les cleacutes artificielles ne sont pas la seule faccedilon doptimiser une base de donneacutees (indexation deacutenormalisation)

53 Bibliographie commenteacutee sur la modeacutelisation UML

Il existe de nombreux outils de modeacutelisation UML On pourra citer

logiciel Open Source et multi-plateformes facile dusage (qui marche neacuteanmoins mieux sur Linux Dia

que sur Windows)

(version gratuite)Objecteering

Cleacutes artificielles et optimisation est-il toujours plus performant dutiliser des cleacutes artificielles

Conseil

Compleacutement Outils de modeacutelisation UML

Etu (id numEtu) avec numEtu cleacute

UV (id codeUv) avec codeUv cleacute

Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

Etu (numEtu)

UV (codeUv)

Inscriptions (uv=gtUV etu=gtEtu)

Bibliographie commenteacutee sur la modeacutelisation UML

28

- - - - - -

- - - - - -

Agrave voir eacutegalement en Open Source ou (non testeacute par lauteur)ArgoUML EclipseUML

UML2 en action

Pour un aperccedilu plus deacutetailleacute des possibiliteacutes dexpression du diagramme de classe UML lire le chapitre 7 Deacuteveloppement du modegravele statique (pages 133 agrave 163)

On pourra notamment y trouver

Lassociation dagreacutegationLes proprieacuteteacutes dassociationLexpression de rocircles dans les associationsLes attributs de classeLes qualificatifsLes opeacuterations (ou meacutethodes)

Le chapitre donne de plus des conseils meacutethodologiques pour la conception (voir en particulier la synthegravese page 163)

On pourra eacutegalement y trouver

Des principes de choix de modeacutelisation entre attributs et classes et sur la segmentation des classesDes principes de seacutelection des attributs (redondance avec les associations avec les classes etc)Des principes de seacutelection des associationsDes principes de choix de cardinaliteacute (notamment pour la gestion dhistorisation)Des principes de seacutelection des relations de geacuteneacuteralisation (heacuteritage)Des principes dintroduction de meacutetaclasses (type)s

U M L e n Franccedilais

Une tregraves bonne reacutefeacuterence en ligne sur la modeacutelisation UML avec des cours des liens vers la norme etc

Le contenu deacutepasse tregraves largement lusage dUML pour la modeacutelisation de BD (et ne fait dailleurs pas de reacutefeacuterence preacutecise agrave ce sous-ensemble particulier)

On pourra consulter en particulier le chapitre sur les diagrammes de classe httpumlfreefrcoursi-p14html

UML en 5 eacutetapes

On consultera en particulier le tutoriel sur les diagrammes de classe httpdeveloppeurjournaldunetcomtutorielcpt010607cpt_umlintroshtml

Cinq petits conseils pour un scheacutema UML efficace

Compleacutement Modeacutelisation UML

Compleacutement Reacutefeacuterence UML en ligne

Compleacutement Tutoriel sur la modeacutelisation UML

Compleacutement Conseils

Synthegravese Les diagrammes de modeacutelisation conceptuelle

29

-

-

- -

-

- -

-

-

- -

-

- - - -

-

-

(chapitre 3)UML2 par la pratique

Des explications exemples et eacutetudes de cas

54 Synthegravese Les diagrammes de modeacutelisation conceptuelle

Un modegravele conceptuel peut ecirctre repreacutesenteacute sous forme de diagramme E-A ou sous forme de diagramme de classe UML

Classe ou Entiteacute

Attribut ou Proprieacuteteacute

TypeacuteMulti-valueacuteComposeacuteDeacuteriveacute

Meacutethode

ParamegravetresValeur de retour

Association

Association

VerbeCardinaliteacute

Heacuteritage

Heacuteritage dattributsHeacuteritage de meacutethodes

Composition (ou entiteacute faible)

Cardinaliteacute

Compleacutement Pratique

Exercices

30

-

-

-

-

-

-

-

1 2

1

1 Exercice Lab III[20 min]

Description du problegraveme

Un laboratoire souhaite geacuterer les meacutedicaments quil conccediloit

Un meacutedicament est deacutecrit par un nom qui permet de lidentifier En effet il nexiste pas deux meacutedicaments avec le mecircme nom Un meacutedicament comporte une description courte en franccedilais ainsi quune description longue en latin On gegravere aussi le conditionnement du meacutedicament cest agrave dire le nombre de pilules par boicircte (qui est un nombre entier)Agrave chaque meacutedicament on associe une liste deacutedieacutee de contre-indications geacuteneacuteralement plusieurs parfois aucune Les contre-indications sont trieacutees par ordre dimportance Lordre est total est strict pour un meacutedicament donc chaque contre-indication possegravede une importance et il nexiste pas deux contre-indications associeacutees au mecircme meacutedicament avec la mecircme importanceTout meacutedicament possegravede au moins un composant souvent plusieurs Un composant est identifieacute par un code unique et possegravede un intituleacute Tout composant peut intervenir dans la fabrication de plusieurs meacutedicaments Il existe des composants qui ne sont pas utiliseacutes pour fabriquer des meacutedicaments et que lon veut quand mecircme geacuterer

Donneacutees de test

Afin de mateacuterialiser notre base de donneacutees nous obtenons les descriptions suivantes

Le a pour description courte et pour description longue Chourix Meacutedicament contre la chute des chouxlaquo raquoVivamus fermentum semper porta Nunc diam velit adipiscing ut tristique vitae sagittis vel odio laquo

Il est conditionneacute en boicircte de 13Maecenas convallis ullamcorper ultricies Curabitur ornare raquoSes contre-indications sont

Le Chourix ne doit jamais ecirctre pris apregraves minuitLe Chourix ne doit jamais ecirctre mis au contact avec de leau

Ses composants sont le et le HG79 SN50Le a pour description courte et pour Tropas Meacutedicament contre les dysfonctionnements intellectuelslaquo raquodescription longue Suspendisse lectus leo consectetur in tempor sit amet placerat quis neque Etiam laquo

Il est conditionneacute en boicircte de 42luctus porttitor lorem sed suscipit est rutrum non raquoSes contre-indications sont

Le Tropas doit ecirctre gardeacute agrave labri de la lumiegravere du soleil

Son unique composant est le HG79Les composants existants sont

HG79 Vif-argent alleacutegeacute

ExercicesII

Exercice Eacutetudiants et UVs (introduction)

31

- - -

- - HG81 Vif-argent alourdi

SN50 Pur eacutetain

Question 1

Question 2

Question 3

2 Exercice Eacutetudiants et UVs (introduction)[20 min]

On dispose du scheacutema UML ci-apregraves qui deacutecrit des eacutetudiants des UV les notes obtenues par les eacutetudiants agrave ces UV et les diplocircmes dorigine de ces eacutetudiants

Eacutetudiants et UVs

key deacutesigne des cleacutes candidates ici toutes les cleacutes ne sont composeacutees que dun seul attributlocal key deacutesigne une cleacute localeun semestre est de la forme PYYYY ou AYYYY (ougrave YYYY deacutesigneacute une anneacutee sur 4 chiffre) exemple A2013 P2014

Rappel Notion de cleacute locale dans classes dassociation (cf p49)

Effectuez le modegravele conceptuel en UML de ce problegraveme

Indices

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans deacutedieacuteeles donneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition

[ ]solution ndeg4 [ ] p56

En mobilisant les regravegles adeacutequates proposer un modegravele logique de donneacutees correspondant en relationnel Le repeacuterage des domaines et des cleacutes est obligatoire

[ ]solution ndeg5 [ ] p57

Dessiner des tableaux remplis avec les donneacutees fournies en exemple afin de montrer que le modegravele fonctionne selon le besoin exprimeacute initialement On pourra mettre le premier mot seulement des descriptions pour gagner du temps

[ ]solution ndeg6 [ ] p57

Exercice Super-heacuteros relationnels I

32

-

-

Question

3 Exercice Super-heacuteros relationnels I[20 min]

La gamme de super-heacuteros GARVEL veut reacutealiser la base de donneacutees de leurs figurines articuleacutees La socieacuteteacute a fait reacutealiser un modegravele UML qui doit servir de point de deacutepart agrave la mise en œuvre

Modegravele UML Figurines GARVEL

Question

4 Exercice Objets Numeacuteriques Libres[30 min]

Lassociation ONL (Objets Numeacuteriques Libres) est une association de promotion des logiciels libres Elle souhaite exposer sur un site Internet une liste de logiciels libres Ce site sera adosseacute agrave une base de donneacutees relationnelle ou relationnel-objet La premiegravere eacutetape de sa deacutemarche est de reacutealiser un modegravele conceptuel repreacutesentant ce quelle souhaite faire

La base de donneacutees permet de geacuterer des applicationsLes applications sont identifieacutees par leur nom (LibreOffice Gimp) et leur version (10 21) et comportent une description courte et une URL Tous les attributs sont obligatoires Chaque application a une URL uniqueLa base de donneacutees permet de geacuterer des librairies

Traduire le scheacutema en modegravele logique relationnel ( )MLD1

On choisira obligatoirement les cleacutes primaires parmi celles neacutecessitant le plus petit nombre de bits possible pour leur codage

[ ]solution ndeg7 [ ] p57

Transformer le modegravele UML en modegravele relationnel (justifier les passages non triviaux en particulier la relation dheacuteritage)

[ ]solution ndeg8 [ ] p58

Exercice Objets Numeacuteriques Libres

33

-

-

-

-

-

-

-

-

-

-

-

-

Les librairies sont des logiciels mais pas des applications Elles ont les mecircmes attributs que les applications (nom version description courte URL) mais les URL ne sont pas neacutecessairement uniques Les applications peuvent deacutependre de librairies ou dautres applications et les librairies peuvent deacutependre dautres librairies (mais pas dune application)La base de donneacutees permet de geacuterer des composantsLes composants sont inteacutegreacutes agrave une application ou librairie Les composants ont un code interne agrave lapplication ou la librairie quil servent une version et une description courte et une URL Le code et le numeacutero de version permettent didentifier localement le composant au sein de la librairie ou de lapplication la description courte et lURL sont optionnellesLa base de donneacutees permet de geacuterer des licencesLes applications librairies et composants sont attacheacutes agrave une ou plusieurs licences identifieacutees par leur nom (GPL MPL) leur version et leur langue et comportant le texte inteacutegral de la licence Les versions des logiciels et licences sont de type numeacutero de licence majeur point numeacutero de licence mineur comme 10 ou 22La base de donneacutees permet de geacuterer des cateacutegoriesChaque logiciel est rangeacute dans une cateacutegorie principale et plusieurs cateacutegories secondaires Exemple de cateacutegories bureautique dessin multimeacutedia physique

Exemple (factice) de donneacutees

Applications

Scenari 41 une chaicircne eacuteditoriale XML httpscenariorg deacutepend de Libreoffice 43 et de ImageMagick 68Libreoffice 43 une suite bureautique WYSIWYG httplibreofficeorg

Librairie

ImageMagick 68 permet de creacuteer de convertir de modifier et dafficher des images http imagemagickorg

Composant

impng 02 est un composant de ImageMagick 68 permet de compresser une image au format PNG

Toutes ces applications librairies et composants sont disponibles sous une licence LGPL 30 et GPL 30 franccedilaisesToutes ces applications et librairies sont rangeacutees dans la cateacutegorie principale document Scenari est rangeacute dans la cateacutegorie secondaire Eacutedition WYSIWYM Libreoffice dans la cateacutegorie secondaire Bureautique ImageMagick dans la cateacutegorie secondaire Multimeacutedia

Question

Reacutealiser un MCD en UML[ ]solution ndeg9 [ ] p58

Devoirs

34

1 Exercice Arbre de scegravene 3D[30 minutes]

On souhaite pouvoir geacuterer les diffeacuterents eacuteleacutements composant des scegravenes 3D dans une base de donneacutees Une scegravene contient des objets qui eux-mecircmes peuvent appartenir agrave plusieurs scegravenes (au moins une) mais il ne peut y avoir plusieurs fois le mecircme objet dans une mecircme scegravene Dans chaque scegravene les objets peuvent ecirctre visibles ou invisibles Les scegravenes et les objets sont identifieacutes de maniegravere unique par un nom Une scegravene peut ecirctre active ou inactive Un objet a comme proprieacuteteacute une position dans lespace repreacutesenteacutee par un vecteur de reacuteels agrave trois composantes (x y z) Les objets sont organiseacutes de maniegravere hieacuterarchique un objet peut ecirctre parent de plusieurs objets et chaque objet peut avoir au plus un parent Des scripts peuvent ecirctre associeacutes agrave un objet ou agrave une scegravene (agrave lun ou agrave lautre mais pas aux deux) Un script est identifieacute de maniegravere unique par un nom et possegravede eacutegalement un attribut permettant de connaicirctre son eacutetat (actif ou inactif) Un personnage est un objet particulier qui possegravede des animations Une animation est relative agrave un personnage et est identifieacutee de maniegravere locale par un nom Agrave un objet est associeacute un maillage et celui-ci peut ecirctre utiliseacute par plusieurs objets Un maillage est identifieacute de maniegravere unique par un nom et est composeacute de plusieurs eacuteleacutements Chaque eacuteleacutement est relatif agrave un maillage et est identifieacute de maniegravere locale par un numeacutero Il existe exactement trois types deacuteleacutement des nœuds des arrecirctes et des faces Une face est deacutelimiteacutee par trois arrecirctes et chaque arrecircte est deacutelimiteacutee par deux nœuds Plusieurs arrecirctes peuvent partager un mecircme nœud et plusieurs faces peuvent partager une mecircme arrecircte Afin deacutevaluer la complexiteacute dune scegravene on souhaite pouvoir calculer le nombre de faces afficheacutees pour une scegravene donneacutee (cest-agrave-dire la somme du nombre de faces du maillage associeacute aux objets visibles de la scegravene) Un maillage possegravede plusieurs mateacuteriaux identifieacutes de maniegravere unique par un nom Un mateacuteriau peut ecirctre associeacute agrave plusieurs maillages Un mateacuteriau est caracteacuteriseacute par une couleur deacutefinie par un vecteur dentiers agrave quatre composantes rouge vert bleu alpha Un mateacuteriau peut posseacuteder une texture et celle-ci peut ecirctre utiliseacutee par plusieurs mateacuteriaux Une texture est identifieacutee de maniegravere unique par un nom et possegravede comme attribut une image

Question 1

Question 2

DevoirsIII

Proposez une clarification de ce problegraveme On pourra reclasser les informations par grande cateacutegorie scegravene objets scripts

Eacutetablissez un modegravele conceptuel en UML de ce problegraveme

Compleacutement Exercices de modeacutelisation suppleacutementaire

35

1 Exercice Appartements agrave louer[30 min]

Une agence dimmobilier (ventes et locations) veut geacuterer son parc dappartements dans une base de donneacutees Chaque appartement possegravede plusieurs piegraveces qui peuvent ecirctre des piegraveces dhabitation des piegraveces de rangement ou des commoditeacutes

Chaque piegravece a une superficie un nombre de prises eacutelectriques et des meubles Pour ces derniers on veut enregistrer le nom du modegravele et le type (chaise lit four etc) Rien nempecircche quune piegravece comporte plusieurs meubles identiques (par exemple plusieurs chaises PIN IQUEA) Les piegraveces dhabitation ont une ou plusieurs fenecirctres les piegraveces de rangement ont une ou plusieurs eacutetagegraveres et une surface de rangement utile totale On veut aussi savoir dans quelles piegraveces de rangement se situent les tableaux eacutelectriques de lappartement Finalement les piegraveces commoditeacutes peuvent ecirctre de trois types cuisine toilette ou salle de bain

Lagence veut aussi enregistrer les portes entre les diffeacuterentes piegraveces Une porte peut ecirctre agrave simple battant double battant coulissante ou une simple ouverture

Chaque appartement a une adresse une superficie totale (qui est la somme des superficies des piegraveces) et un type qui est la lettre T suivie du nombre de piegraveces dhabitation de lappartement Pour un appartement donneacute chaque piegravece est identifieacutee par un numeacutero (commenccedilant au numeacutero 1)

Lagence veut eacutegalement enregistrer le quartier ougrave se trouve lappartement auquel est lieacute un prix par megravetre carreacute Finalement elle veut garder un historique de lhistoire de lappartement les peacuteriodes pour lesquelles il est libre occupeacute en travaux ou vendu

Question

2 Exercice Objectifs[40 min]

Vous prenez la preacutesidence de lassociation Objectifs dont lobjet est daider ses eacutetudiants membres agrave mener des projets dans le cadre de leurs eacutetudes

Compleacutement Exercices de modeacutelisation suppleacutementaire

IV

Reacutealisez le diagramme UML reacutepondant aux besoins de cette agence[ ]solution ndeg10 [ ] p59

Exercice Objectifs

36

- - -

-

-

- - -

Vous constatez en arrivant dans lassociation que personne ne sait exactement quels sont les projets en cours ni qui fait quoi dans les projets Vous ne parvenez pas non plus agrave obtenir une liste exacte des partenaires sur lesquels lassociation peut compter La seule chose sur laquelle vous parvenez agrave mettre la main est un fichier tableur vaguement agrave jour

Vous deacutecidez quil est plus que temps de mettre en place une base de donneacutees afin dassurer la bonne gestion des informations les plus importantes pour lassociation Vous vous attachez pour cela agrave reacutealiser une analyse des besoins

Analysez les documents ci-apregraves

Etat des projets

Eacutetat des projets de lassociation Objectifs

Recueil de besoins

Agrave partir de leacutetude du fonctionnement actuel de lassociation vous relevez les choses importantes agrave geacuterer suivantes

Les membres de lassociation geacuteneacuteralement identifieacutes par leur preacutenomLes projets geacutereacutes par lassociation avec des dates de deacutebut et de fin preacutecises et un chef de projetLe deacutetail des tacircches de chaque projet avec leurs dates de deacutebut et de fin aussi et la liste de tous les membres qui y participentLa liste des partenaires des projets avec leur rocircle preacutecis pour chacun des projets auxquels ils participent

Afin de mieux geacuterer les attributions des projets il serait eacutegalement inteacuteressant de creacuteer une liste des speacutecialiteacutes correspondant agrave ce qui ce fait dans lassociation et daffecter une speacutecialiteacute agrave chaque membre ainsi quune agrave chaque projet pour voir si ce sont bien les membres les mieux adapteacutes qui travaille sur les projets

Recueil de donneacutees

Les discussions avec les anciens membres de lassociation vous apprennent les choses suivantes

Lassociation a termineacute de geacuterer les trois projets Comeacutedie Musicale geacutereacutee par Nathalie sur les trois premiers mois du semestre dautomne 1001 Science en fecircte geacutereacutee par Pierre sur tout le semestre de printemps 1003 et Nuit du picolo geacutereacutee par Julien en novembre 1001Les speacutecialiteacutes recenseacutees pour le moment sont Ville Universiteacute Sport Entreprise Culture InternationalIl faut au moins dix membres agrave lassociation (sinon elle ferme) recruter ceux qui manquentAidez lassociation agrave diviser ses projets en tacircches

Exercice Objectifs

37

- Les partenaires suivants aident ou ont aideacute lassociation la mairie pour la comeacutedie musicale et la science en fecircte qui apporte un soutien financier le ministegravere de la culture qui apporte son soutien logistique agrave la science en fecircte lassociation des commerccedilants de la ville qui apporte son soutien publicitaire agrave la comeacutedie musicale 1664 qui offre ses biegraveres agrave moitieacute prix pour la nuit du Picolo

Question 1

Question 2

Question 3

Afin de preacuteparer une analyse des besoins sommaire listez les donneacutees que vous devrez geacuterer agrave laide des documents et recueils de discussion agrave votre disposition Faites des hypothegraveses lorsque les donneacutees sont incomplegravetes ou incoheacuterentes

[ ]solution ndeg11 [ ] p59

Reacutealiser le MCD en UML et en E-A agrave partir des donneacutees preacutepareacutees dans la question preacuteceacutedente[ ]solution ndeg12 [ ] p60

Reacutealiser le MLD en relationnel en traduisant votre MCD[ ]solution ndeg13 [ ] p61

Contenus annexes

38Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

- - -

gt Attributs

Un attribut est une information eacuteleacutementaire qui caracteacuterise une classe et dont la valeur deacutepend de lobjet instancieacute

Le domaine des valeurs que peut prendre lattribut est fixeacute a prioriUn attribut est typeacute

Il peut prendre plusieurs valeurs distinctes dans son domaineUn attribut peut ecirctre multivalueacute Sa valeur alors est une fonction sur dautres attributs de la classeUn attribut peut ecirctre deacuteriveacute

(ou composite) Il joue alors le rocircle dun groupe dattributs (par Un attribut peut ecirctre composeacuteexemple une adresse peut ecirctre un attribut composeacute des attributs numeacutero type de voie nom de la voie) Cette notion renvoie agrave la notion de variable de type dans les langages de Record

programmation classiques

En UML on preacutefegravere lusage de meacutethodes aux attributs deacuteriveacutes On utilisera toujours des meacutethodes degraves que la valeur de lattribut deacuteriveacute deacutepend dautres attributs exteacuterieurs agrave sa classeEn UML on preacutefegravere lusage de compositions aux attributs composeacutes On utilisera toujours des compositions pour les attributs composeacutes et multivalueacutes

1 attributtype2 attribut_multivalueacute[nbMinValeursnbMaxValeurs]type3 attribut_deacuteriveacutetype4 attribut_composeacute5   - sous-attribut1type6   - sous-attribut2type7   -

Contenus annexes

Deacutefinition Attribut

Attention On utilise peu les attributs deacuteriveacutes et composeacutes en UML

Syntaxe

attributtype

attribut_multivalueacute[nbMinValeursnbMaxValeurs]type

attribut_deacuteriveacutetype

attribut_composeacute

  - sous-attribut1type

  - sous-attribut2type

  -

Contenus annexes

39Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Repreacutesentation dattributs en UML

Dans cet exemple les attributs Nom Preacutenom sont de type lun de 20 caractegraveres et lautre de 10 stringtandis que DateNaissance est de type et Age de type Preacutenom est un attribut multivalueacute ici date integerune personne peut avoir de 1 agrave 3 preacutenoms Age est un attribut deacuteriveacute il est calculeacute par une fonction sur DateNaissance

Meacutethodes (cf p39)

Composition (cf p5)

gt Meacutethodes

Une meacutethode (ou opeacuteration) est une fonction associeacutee agrave une classe dobjet qui permet dagir sur les objets de la classe ou qui permet agrave ces objets de renvoyer des valeurs (calculeacutees en fonction de paramegravetres)

1 methode(paramegravetres)type

Pour la modeacutelisation des bases de donneacutees les meacutethodes sont surtout utiliseacutees pour repreacutesenter des donneacutees calculeacutees (agrave linstar des attributs deacuteriveacutees) ou pour mettre en exergue des fonctions importantes du systegraveme cible Seules les meacutethodes les plus importantes sont repreacutesenteacutees lapproche est moins systeacutematique quen modeacutelisation objet par exemple

Lors de la transformation du modegravele conceptuel UML en modegravele logique relationnel les meacutethodes ne Leur repeacuterage au niveau conceptuel sert donc surtout daide-seront geacuteneacuteralement pas impleacutementeacutees

meacutemoire pour limpleacutementation au niveau applicatif

Exemple La classe Personne

Compleacutement Voir aussi

Deacutefinition Meacutethode

Syntaxe

Remarque Meacutethodes et modeacutelisation de BD

Remarque Meacutethodes relationnel relationnel-objet

methode(paramegravetres)type

Contenus annexes

40Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Au contraire un modegravele logique relationnel-objet permettra limpleacutementation de meacutethodes directement associeacutees agrave des tables Leur repeacuterage au niveau conceptuel est donc encore plus important

Transformation des meacutethodes par des vues (cf p40)

gt Transformation des meacutethodes par des vues

Lorsquune meacutethode est speacutecifieacutee sur un diagramme UML pour une classe C si cette meacutethode est une fonction relationnelle (elle renvoie une unique valeur et elle peut ecirctre reacutesolue par une requecircte SQL) alors on creacutee une vue qui reprend les attributs de la classe C et ajoute des colonnes calculeacutees pour les meacutethodes

Les attributs deacuteriveacutes eacutetant apparenteacutes agrave des meacutethodes ils peuvent eacutegalement ecirctre geacutereacutes par des vues

gt Classe dassociation

On utilise la notation des classes dassociation lorsque lon souhaite ajouter des proprieacuteteacutes agrave une association

Notation dune classe dassociation en UML

On reacuteserve en geacuteneacuteral les classes dassociation aux associations NM

Il est toujours possible de reacuteduire une classe dassociation sur une association 1N en migrant ses attributs sur la classe cocircteacute N et cest en geacuteneacuteral plus lisible ainsi

Compleacutement

Meacutethode

Remarque Attributs deacuteriveacutes

Deacutefinition Classe dassociation

Syntaxe Notation dune classe dassociation en UML

Meacutethode

Contenus annexes

41Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

-

Emplois

Selon le standard UML une classe dassociation est une classe et agrave ce titre elle peut ecirctre mobiliseacutee dans dautres associations ou dans des heacuteritages Nous deacuteconseillons neacuteanmoins ces notations qui ont tendance agrave complexifier la lecture et la transformation du diagramme

Nous conseillons donc de ne jamais associer une classe dassociation

gt Transformation des attributs

Pour chaque attribut eacuteleacutementaire et monovalueacute dune classe

on creacutee un attribut correspondant

Attribut

Classe1(ab)

Pour chaque attribut composite comprenant N sous-attributs dune classe

on creacutee N attributs correspondantsdont les noms sont la concateacutenation du nom de lattribut composite avec celui du sous-attribut

Exemple Exemple de classe dassociation

Conseil

Meacutethode Attributs simples

Meacutethode Attributs composites

Contenus annexes

42Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- - - -

Attribut composeacute

Classe1(ab_b1b_b2)

Pour chaque attribut multivalueacute b dune classe C

on creacutee une nouvelle relation RBqui comprend un attribut monovalueacute correspondant agrave bplus la cleacute de la relation repreacutesentant C la cleacute de RB est la concateacutenation des deux attributs

Attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Dans le cas ougrave le nombre maximum de est fini et petit on peut eacutegalement adopter la transformation b

suivante Classe1(ab1b2b3b4b5b6b7b8b9b10)

Si le nombre dattributs est infini ( ) cest impossible sil est trop grand ce nest pas souhaitableb[1]

On combine les regravegles eacutenonceacutees pour les attributs composeacutes et pour les attributs multivalueacutes

Attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Transformation des compositions (cf p42)

Meacutethode Attributs multivalueacutes

Meacutethode Attributs multivalueacutes (meacutethode alternative)

Meacutethode Attributs composeacutes multivalueacutes

Rappel Voir aussi

Contenus annexes

43Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

gt Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Compleacutement Attributs multivalueacutes et composeacutes

Contenus annexes

44Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

Rappel Voir aussi

Rappel

Meacutethode

Contenus annexes

45Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p48)

gt Transformation des associations 1N

Pour chaque association binaire de type 1N

on ajoute agrave la relation cocircteacute N une cleacute eacutetrangegravere vers la relation cocircteacute 1

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Meacutethode

Contenus annexes

46Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Association 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Contrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p46)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

R1

Compleacutement

Rappel

Meacutethode

Contenus annexes

47Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p47)

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Deacutefinition Projection

Contenus annexes

48Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Deacutefinition Projection

Contenus annexes

49Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Transformation des classes dassociation

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de lassociation NM

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Meacutethode Classe dassociation NM

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Notion de cleacute locale dans les compositions et les associations NM

8

- - -

15 Associations reacuteflexives

Une association reacuteflexive est une association qui associe une classe avec elle-mecircme

Association reacuteflexive laquo ami raquo

Lexplicitation des associations est souvent utile dans le cas des associations reacuteflexives non symeacutetrique (ou chaque objet ne joue pas le mecircme rocircle)

Une instance peut ecirctre associeacutee avec elle-mecircme dans le cas de dune association reacuteflexive

Si lon souhaite exprimer le contraire (une instance peut ecirctre associeacutee avec dautres instances de la mecircme classe mais pas avec elle-mecircme)

on ajoute une contrainte en UML (par exemple les personnes ne se marient pas avec elles-mecircmes) que lon traduira en relationnel par une contrainte du type AVEC pk fk

que lon traduira en SQL par une clause du type CHECK pk = fk

16 Notion de cleacute locale dans les compositions et les associations NM

Le concept de cleacute locale appartient au niveau conceptuel il est heacuteriteacute de lentiteacute faible du modegravele conceptuel Entiteacute-Association (eacutequivalent de la composition en UML) Dans une entiteacute faible ou une composition une cleacute de la classe composant est dite locale car elle ne permet didentifier lobjet que si lon connaicirct la classe composite

Dans certaines constructions en UML (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Deacutefinition Association reacuteflexive

Exemple

Meacutethode

Attention Auto-association dans les associations reacuteflexives

Deacutefinition

Attention

Classe dassociation avec cleacute locale

9

Dans une associations NM on peut avoir des (vraies) cleacutes ou des cleacutes locales En revanche dans une composition on na que des cleacutes locales en effet si le composant est identifiable indeacutependamment de son composite cest en geacuteneacuteral quil a une vie propre et donc que lon est pas en preacutesence dune composition

17 Classe dassociation avec cleacute locale

Classe dassociation (cf p40)

Dans lexemple suivant chaque personne peut avoir un emploi dans plusieurs socieacuteteacutes mais elle ne peut pas avoir plusieurs emplois dans une mecircme socieacuteteacute

Emplois

La transformation en relationnelle est coheacuterente avec cette contrainte

1 Socieacuteteacute()2 Personne()3 Emploi(personne=gtPersonne societe=gtSociete postestring salaireinteger quotitenumeric(12))

La speacutecification dune cleacute locale dans emploi par exemple ici le poste permet de lever cette contrainte lorsquon le souhaite en permettant didentifier chaque instance de lassociation ici lemploi dune personne par sa socieacuteteacute

Attention

Rappel

Contrainte inheacuterente agrave la relation NM

Meacutethode Inteacuterecirct de la cleacute locale

Socieacuteteacute()

Personne()

Emploi(personne=gtPersonne societe=gtSociete postestring salaireinteger

quotitenumeric(12))

Associations ternaires

10

La transformation en relationnelle permettra de maintenir la modeacutelisation en ajoutant la cleacute locale agrave la cleacute initiale

1 Socieacuteteacute()2 Personne()3 Emploi(personne=gtPersonne societe=gtSociete postestring salaireinteger quotitenumeric(72))

18 Associations ternaires

Notation dune association ternaire

Il est toujours possible de reacuteeacutecrire une association ternaire avec trois associations binaires en transformant lassociation en classe

Syntaxe

Conseil Ne pas abuser des associations ternaires

Socieacuteteacute()

Personne()

Emploi(personne=gtPersonne societe=gtSociete postestring salaireinteger

quotitenumeric(72))

Passage UML-Relationnel Associations avanceacutees

11

En pratique on nutilise jamais en UML dassociation de degreacute supeacuterieur agrave 3

2 Passage UML-Relationnel Associations avanceacuteesObjectifs

Savoir faire le passage dun scheacutema conceptuel UML agrave un scheacutema relationnel dans tous les cas

Reconnaicirctre les cas de transformation qui se traitent toujours de la mecircme faccedilon et ceux qui neacutecessite une modeacutelisation compleacutementaire

21 Trousseau de cleacutes

En UML et en relationnel il existe plusieurs termes mobilisant le mot laquo cleacute raquo le seul concept qui est commun est le concept de Tous les autres sont speacutecifiques au niveau conceptuel ou relationnelcleacute

Cleacute (key)

Cleacute locale (local key)

Cleacute (key)

Cleacute candidate (candidate key)

Cleacute primaire (primary key) et Cleacute alternative (alternate key)

Cleacute artificielle (surrogate key) et Cleacute naturelle (natural key business key)

Cleacute eacutetrangegravere (foreign key)

Conseil Pas de degreacute supeacuterieur agrave 3

Attention

Rappel Concept commun au niveau UML et relationnel

Rappel Concept speacutecifique au niveau UML

Rappel Concepts speacutecifiques au niveau relationnel

Transformation des compositions

12

- -

Deacutefinition des cleacutes en relationnel

22 Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Transformation des agreacutegations

13

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

23 Transformation des agreacutegations

Les associations de type agreacutegation se traitent de la mecircme faccedilon que les associations classiques

Agreacutegation 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Compleacutement Attributs multivalueacutes et composeacutes

Rappel Voir aussi

Rappel Agreacutegation

Transformation des classes dassociation avec cleacute locale

14

- -

Agreacutegation NM

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2)

24 Transformation des classes dassociation avec cleacute locale

Les attributs de la classe dassociation

sont ajouteacutes agrave la relation issue de lassociation NM la cleacute locale de la classe dassociation est concateacuteneacutee aux cleacutes eacutetrangegraveres composant deacutejagrave la cleacute primaire de la relation dassociation

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Meacutethode Classe dassociation NM

Exercice

15

25 Correspondance entre UML et relationnel

Passsage UML vers Relationnel

Exercice

16

26 ExerciceQuel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

[ ]solution ndeg2 [ ] p53

Exercice

17

27 ExerciceSoit le scheacutema UML suivant

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

[ ]solution ndeg3 [ ] p54

Modeacutelisation avanceacutee des associations 11 en relationnel

18

-

- -

-

-

3 Modeacutelisation avanceacutee des associations 11 en relationnelObjectifs

Savoir faire le passage dun scheacutema conceptuel UML agrave un scheacutema relationnel

Connaicirctre les choix possibles pour le cas de lassociation 11 et savoir faire le meilleur choix

Il existe des formulations conceptuelles en UML qui sont plus deacutelicates agrave traduire au niveau logique en relationnel comme lassociation 11 Ces cas requiegraverent un choix eacuteclaireacute de la part du concepteur

31 Transformation des associations 11 (approche geacuteneacuterale)

Il existe deux solutions pour transformer une association 11

Avec deux relations on traite lassociation 11 comme une association 1N puis lon ajoute une contrainte UNIQUE sur la cleacute eacutetrangegravere pour limiter la cardinaliteacute maximale agrave 1 Avec une seule relation on fusionne les deux classes en une seule relation

Association 11

Une des deux relations est choisie pour porter la cleacute eacutetrangegravere on ajoute les contraintes ou (cleacute candidate) sur la cleacute eacutetrangegravere et si neacutecessaire une UNIQUE KEY

contrainte imposant linstanciation simultaneacutee des deux relations

Classe1(abc=gtClasse2) avec c UNIQUE ou KEY

Classe2(cd)

ou

Classe1(ab)

Classe2(cda=gtClasse1) avec a UNIQUE ou KEY

On creacuteeacute une seule relation contenant lensemble des attributs des deux classes

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Meacutethode Avec deux relations (cleacute eacutetrangegravere)

Meacutethode Avec une relation (fusion)

Transformation des associations 1111

19

- -

- - - - - -

- on choisit une cleacute parmi les cleacutes candidates

Classe12(abcd) avec c UNIQUE ou KEY

ou

Classe21(cdab) avec a UNIQUE ou KEY

Ce choix entre les deux meacutethodes sera conduit par une appreacuteciation du rapport entre

La complexiteacute introduite par le fait davoir deux relations lagrave ou une suffitLa pertinence de la seacuteparation des deux relations dun point de vue seacutemantiqueLes pertes de performance dues agrave leacuteclatement des relationsLes pertes de performance dues au fait davoir une grande relationLes questions de seacutecuriteacute et de sucircreteacute factoriseacutees ou non au niveau des deux relations

Dans le cas dune association 1111 il faudra ajouter une contrainte compleacutementaire

Transformation des associations 1111 (cf p19)

32 Transformation des associations 1111

Le plus souvent cest meacutethode par des relations qui est la plus adapteacutee agrave ce casfusionLorsquelle ne lest pas et que lon choisit deux relations il faut ajouter une contrainte dynamique qui controcirclera que les deux relations sont bien toujours instancieacutees ensembles Notons que la cleacute eacutetrangegravere peut ecirctre choisie comme cleacute primaire

Association 11

Classe12(abcd) avec c KEY

ou

Classe21(cdab) avec a KEY

ou

Classe1(abc=gtClasse2) avec c KEY

Classe2(cd)

Contrainte PROJECTION(Classe1c) = PROJECTION(Classe2c)

ou

Classe1(ab)

Remarque Fusion des relations dans le cas de la traduction de lassociation 11

Compleacutement

Meacutethode Association 1111

Transformation des associations 0111

20

-

-

-

-

Classe2(cda=gtClasse1) avec a KEY

Contrainte PROJECTION(Classe1a) = PROJECTION(Classe2a)

La contrainte dynamique exprimeacutee ici suit le mecircme principe que pour les association 1NContrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p44)

33 Transformation des associations 0111

Le plus souvent cest la meacutethode par les deux relations qui est la plus adapteacutee on choisira toujours la relation cocircteacute 01 pour ecirctre reacutefeacuterenccedilante

Il est possible dutiliser la fusion dans ce cas les cleacutes cocircteacute 01 deviennent des attributs il ne UNIQUE

peuvent plus ecirctre cleacutes pouvant ecirctre NULL

Association 011

Classe1(abc=gtClasse2) avec c KEY

Classe2(cd)

ou

Classe12(cdab) avec a UNIQUE

34 Transformation des associations 0101

On choisit la solution avec deux relations dun cocircteacute ou de lautre la cleacute eacutetrangegravere est associeacute agrave la contrainte ce nest pas une cleacute car elle peut ecirctre nulleUNIQUE

Il nest pas souhaitable de choisir la fusion lune des deux relations pouvant ecirctre nulle on ne pourrait plus trouver de cleacute naturelle

Association 0101

Classe1(abc=gtClasse2) avec c UNIQUE

Classe2(cd)

ou

Compleacutement Contrainte dynamique

Meacutethode Association 0111

Meacutethode Association 0101

Exemple de choix pour une relation 11

21

-

- -

-

-

Classe1(ab)

Classe2(cda=gtClasse1) avec a UNIQUE

35 Exemple de choix pour une relation 11

Soit deux entiteacutes homme et femme et une association mariage de cardinaliteacute 1111 entre ces deux entiteacutes (hommes et femmes sont donc obligatoirement marieacutes)Les entiteacutes homme et femme sont identifieacutees par un attribut nom (dans ce modegravele chaque personne a un nom unique on pourrait remplacer le nom par un identifiant comme le numeacutero de seacutecuriteacute social ou par une cleacute artificielle pour ecirctre plus proche de la reacutealiteacute)

Bien que de type 1111 le choix de la fusion nest pas tregraves opportun car il sagit bien dobjets distincts que lon veut modeacuteliser

On choisira donc plutocirct la repreacutesentation avec deux relationsLa cleacute eacutetrangegravere pourra ecirctre du cocircteacute homme ou femme mecircme si la pratique dominante nous incite agrave la mettre du cocircteacute femmeOn pourra eacutegalement deacutecider de prendre la cleacute eacutetrangegravere comme cleacute primaire

1 homme (nom)2 femme (mariage=gthomme nom) avec nom KEY3 Contrainte PROJ(hommenom) = PROJ(femmemariage)

Si lassociation avait eacuteteacute de cardinaliteacute 0101 (certains hommes et femmes ne sont pas marieacutes) un choix similaire se serait imposeacute avec limpossibiliteacute de choisir la cleacute eacutetrangegravere comme cleacute primaire celle-ci pouvant ecirctre nulle et neacutetant donc plus candidate

1 homme (nom)2 femme (nom mariage=gthomme) avec mariage UNIQUE

4 Autres eacuteleacutements utiles en UML packages et steacutereacuteotypesObjectifs

Maicirctriser le diagramme de classe UML dans le cas de la conception de BD

41 Paquetages

Les paquetages (plus communeacutement appeleacutes ) sont des eacuteleacutements servant agrave organiser un modegravelepackage

Ils sont particuliegraverement utiles degraves que le modegravele comporte de nombreuses classes et que celles-ci peuvent ecirctre trieacutees selon plusieurs aspects structurants

Exemple

Exemple

Deacutefinition Package

homme (nom)

femme (mariage=gthomme nom) avec nom KEY

Contrainte PROJ(hommenom) = PROJ(femmemariage)

homme (nom)

femme (nom mariage=gthomme) avec mariage UNIQUE

Steacutereacuteotype

22

Notation des paquetages en UML

Exemple dutilisation des packages

On repreacutesente chaque classe au sein dun Il est alors possible de faire une preacutesentation globale du packagemodegravele (tous les ) partielle (une partie des ) ou centreacutee sur un seul packages packages package

Pour une repreacutesentation partielle ou centreacutee sur un on repreacutesente les concerneacutes avec leurs package packagesclasses propres ainsi que toutes les classes lieacutees des autres packages (et seulement celles-ci)

Preacutesentation partielle du modegravele centreacutee sur un package

Syntaxe

Exemple

Meacutethode

Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt

23

42 Steacutereacuteotype

Un steacutereacuteotype UML est une syntaxe permettant dajouter de la seacutemantique agrave la modeacutelisation des classes Il permet de deacutefinir des afin de regrouper conceptuellement un ensemble de classes (agrave linstar types de classedune classe qui permet de regrouper conceptuellement un ensemble dobjets)

Cest une meacutecanique de meacuteta-modeacutelisation elle permet deacutetendre le meacuteta-modegravele UML cest agrave dire le modegravele conceptuel du modegravele conceptuel

Un meacuteta-modegravele est le modegravele dun modegravele Par exemple le meacuteta-modegravele UML comprend les concepts de classe attribut association cardinaliteacute composition agreacutegation contraintes annotations On mobilise ces concepts (on les instancie) pour exprimer un modegravele particulier suivant le formalisme UML

Les steacutereacuteotypes permettent donc dajouter au meacuteta-modegravele UML standard celui que tout le monde utilise des concepts locaux pour enrichir le langage de modeacutelisation que lon utilise pour reacutealiser des modegraveles

Notation dun steacutereacuteotype en UML

Un steacutereacuteotype speacutecifique enrichit le meacuteta-modegravele UML mais selon une seacutemantique qui est propre agrave celui qui la poseacute non standard donc La conseacutequence est que pour un tiers linterpreacutetation du steacutereacuteotype nest plus normaliseacutee et sera potentiellement plus facilement erroneacutee Il convient donc de ne pas abuser de cette meacutecanique

Deux ou trois steacutereacuteotypes speacutecifiques correctement deacutefinis sont faciles agrave transmettre plusieurs dizaines repreacutesenteraient un nouveau langage complet agrave apprendre pour le lecteur du modegravele

Il existe des steacutereacuteotypes fournit en standard par UML ou communeacutement utiliseacutes par les modeacutelisateurs Lavantage est quil seront compris plus largement au mecircme titre que le reste du meacuteta-modegravele (ils ont une valeur de standard)

43 Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt

Deacutefinition Steacutereacuteotype UML

Deacutefinition Meacuteta-modegravele

Syntaxe

Conseil Steacutereacuteotypes speacutecifiques et steacutereacuteotypes standard

Syntaxe

Type utilisateurs steacutereacuteotype ltltdataTypegtgt

24

Steacutereacuteotype UML permettant dexprimer une eacutenumeacuteration

Exemple de modeacutelisation UML deacutenumeacuteration

44 Type utilisateurs steacutereacuteotype ltltdataTypegtgt

Les types utilisateurs permettent de deacutefinir des types complexes propres en extension des types primaires (entier chaicircne date)

Steacutereacuteotype dataType

Steacutereacuteotype dataType (exemple)

Cette modeacutelisation est eacutequivalente agrave la modeacutelisation des attributs composeacutes directement dans la classe principale Cest une repreacutesentation plus standard en UML

Exemple

Syntaxe

Exemple

Meacutethode Attributs composeacutes

Synthegravese sur la modalisation UML et relationnelle

25

Quelques eacuteleacutements de stylistique UML

26

-

- -

-

-

-

- - -

- - - -

1

2

3

5 Synthegravese sur la modalisation UML et relationnelle51 Quelques eacuteleacutements de stylistique UML

Toutes les associations doivent ecirctre nommeacutees (sauf composition heacuteritage agreacutegation)Ne pas utiliser de nom geacuteneacuterique pour les Classes comme Entiteacute Classe Objet TrucEacuteviter les noms geacuteneacuteriques pour les associations (comme est associeacute agrave)Attention au sens des compositions et agreacutegation le losange est cocircteacute ensemble et noubliez pas les cardinaliteacutes notamment cocircteacute parties

Nutilisez pas le souligneacute ni les en UML pour identifier les cleacutes preacutefeacuterez la contrainte keyPreacutefeacuterez lheacuteritage aux booleacuteens de typage en UMLLes attributs deacuteriveacutes sont reacuteserveacutes aux deacuterivations simples (des attributs de la mecircme classe) si cest plus complexe preacutefeacuterez des meacutethodes (et dans le doute preacutecisez les modes de calcul sur le scheacutema ou dans une note agrave part)Donnez des exemples de contenu lorsque ce nest pas eacutevident (lorsque le couple nom dattribut et type ne permet pas de faccedilon eacutevidente de comprendre de quoi lon parle)Inutile de deacuteclarer le type booleacuteen en UML utilisez-le directement comme un type de donneacutees connu

Si tous vos heacuteritages sont exclusifs notez-le agrave part pour alleacuteger votre scheacutema (et eacuteviter labondance de XOR)

52 Attention aux cleacutes artificielles

en UML on ne pose jamais de cleacutes artificiellesen relationnel on pose rarement des cleacute artificielles sauf dans le cas de cleacutes eacutetrangegraveres vraiment trop compliqueacuteesen SQL on peut poser des cleacutes artificielles si on a une bonne raison (ce nest donc pas systeacutematique et cest agrave justifier)

On najoutera pas de cleacute artificielle en UML au moment de la modeacutelisation conceptuelle des donneacutees

Formellement en UML la notion de cleacute nexiste pas (contrairement agrave l ) elle est ajouteacutee par les E-A

pratiquants des BD

Logiquement on a pas besoin de cette notion en UML les cleacutes artificielles servent en relationnel et dans certains cas uniquementPratiquement cela peut conduire agrave des situations absurdes (comme enlever au niveau logique des cleacutes artificielles ajouteacutees au niveau conceptuel)

Attention

Conseil

Compleacutement

Fondamental

Cleacutes artificielles et niveau conceptuel

Bibliographie commenteacutee sur la modeacutelisation UML

27

-

-

- -

-

- -

-

-

3

4

5

si on fait du non-relationnel on ne doit pas ajouter de cleacutes artificielles dans certains cas (limbrication typiquement) cela arrive mecircme en relationnel avec la transformation de lheacuteritage (dans certains cas toujours)

Meacutethodologiquement il faut se concentrer agrave chaque phase sur ce qui est important donc au moment du MCD on traduit les besoins on repegravere les contraintes explicites (cleacute uniciteacute non nulliteacute) sans se preacuteoccuper de ce qui sera rendu neacutecessaire par la suite par la modeacutelisation relationnelle (les cleacutes eacutetrangegraveres par exemple) ou limpleacutementation (loptimisation par exemple) Agrave chaque jour suffit sa peine Peacutedagogiquement enfin les deacutebutants ont tendance (agrave cause des environnements de conception graphique comme phpMyAdmin notamment) agrave systeacutematiser les cleacutes artificielles en SQL (on pourrait en discuter) mais eacutegalement agrave ne pas faire le travail de recherche des cleacutes naturelles (au niveau relationnel notamment ce qui est une faute de modeacutelisation) Donc au plus tard on fait intervenir les cleacutes artificielles au plus on a une chance de penser aux cleacutes naturelles

Soit le modegravele relationnel suivant

1 Etu (id numEtu) avec numEtu cleacute 2 UV (id codeUv) avec codeUv cleacute3 Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

La question qui permet dafficher la liste des eacutetudiants (numEtu) avec leurs UVs (codeUv) neacutecessite une jointure des cleacutes artificielles Un modegravele sans ces cleacutes artificielles aurait eacuteteacute plus performant pour agrave causereacutepondre agrave cette question puisque toutes les informations se trouvent dans la relation Inscriptions

1 Etu (numEtu) 2 UV (codeUv) 3 Inscriptions (uv=gtUV etu=gtEtu)

Ne soyez pas systeacutematiqueIl est en effet freacutequent dans un projet reacuteel dadopter des cleacutes artificielles presque systeacutematiquement vous pourrez le faire en connaissance de cause quand vous aurez bien compris pourquoi cest inteacuteressant et quand ccedila ne lest pasLes cleacutes artificielles sont inteacuteressantes pour autre chose que les performances (leacutevolutiviteacute par exemple choisissez-les quand vous savez pourquoi)Les cleacutes artificielles ne dispensent pas de rechercher les cleacutes naturelles Les cleacutes artificielles ne sont pas la seule faccedilon doptimiser une base de donneacutees (indexation deacutenormalisation)

53 Bibliographie commenteacutee sur la modeacutelisation UML

Il existe de nombreux outils de modeacutelisation UML On pourra citer

logiciel Open Source et multi-plateformes facile dusage (qui marche neacuteanmoins mieux sur Linux Dia

que sur Windows)

(version gratuite)Objecteering

Cleacutes artificielles et optimisation est-il toujours plus performant dutiliser des cleacutes artificielles

Conseil

Compleacutement Outils de modeacutelisation UML

Etu (id numEtu) avec numEtu cleacute

UV (id codeUv) avec codeUv cleacute

Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

Etu (numEtu)

UV (codeUv)

Inscriptions (uv=gtUV etu=gtEtu)

Bibliographie commenteacutee sur la modeacutelisation UML

28

- - - - - -

- - - - - -

Agrave voir eacutegalement en Open Source ou (non testeacute par lauteur)ArgoUML EclipseUML

UML2 en action

Pour un aperccedilu plus deacutetailleacute des possibiliteacutes dexpression du diagramme de classe UML lire le chapitre 7 Deacuteveloppement du modegravele statique (pages 133 agrave 163)

On pourra notamment y trouver

Lassociation dagreacutegationLes proprieacuteteacutes dassociationLexpression de rocircles dans les associationsLes attributs de classeLes qualificatifsLes opeacuterations (ou meacutethodes)

Le chapitre donne de plus des conseils meacutethodologiques pour la conception (voir en particulier la synthegravese page 163)

On pourra eacutegalement y trouver

Des principes de choix de modeacutelisation entre attributs et classes et sur la segmentation des classesDes principes de seacutelection des attributs (redondance avec les associations avec les classes etc)Des principes de seacutelection des associationsDes principes de choix de cardinaliteacute (notamment pour la gestion dhistorisation)Des principes de seacutelection des relations de geacuteneacuteralisation (heacuteritage)Des principes dintroduction de meacutetaclasses (type)s

U M L e n Franccedilais

Une tregraves bonne reacutefeacuterence en ligne sur la modeacutelisation UML avec des cours des liens vers la norme etc

Le contenu deacutepasse tregraves largement lusage dUML pour la modeacutelisation de BD (et ne fait dailleurs pas de reacutefeacuterence preacutecise agrave ce sous-ensemble particulier)

On pourra consulter en particulier le chapitre sur les diagrammes de classe httpumlfreefrcoursi-p14html

UML en 5 eacutetapes

On consultera en particulier le tutoriel sur les diagrammes de classe httpdeveloppeurjournaldunetcomtutorielcpt010607cpt_umlintroshtml

Cinq petits conseils pour un scheacutema UML efficace

Compleacutement Modeacutelisation UML

Compleacutement Reacutefeacuterence UML en ligne

Compleacutement Tutoriel sur la modeacutelisation UML

Compleacutement Conseils

Synthegravese Les diagrammes de modeacutelisation conceptuelle

29

-

-

- -

-

- -

-

-

- -

-

- - - -

-

-

(chapitre 3)UML2 par la pratique

Des explications exemples et eacutetudes de cas

54 Synthegravese Les diagrammes de modeacutelisation conceptuelle

Un modegravele conceptuel peut ecirctre repreacutesenteacute sous forme de diagramme E-A ou sous forme de diagramme de classe UML

Classe ou Entiteacute

Attribut ou Proprieacuteteacute

TypeacuteMulti-valueacuteComposeacuteDeacuteriveacute

Meacutethode

ParamegravetresValeur de retour

Association

Association

VerbeCardinaliteacute

Heacuteritage

Heacuteritage dattributsHeacuteritage de meacutethodes

Composition (ou entiteacute faible)

Cardinaliteacute

Compleacutement Pratique

Exercices

30

-

-

-

-

-

-

-

1 2

1

1 Exercice Lab III[20 min]

Description du problegraveme

Un laboratoire souhaite geacuterer les meacutedicaments quil conccediloit

Un meacutedicament est deacutecrit par un nom qui permet de lidentifier En effet il nexiste pas deux meacutedicaments avec le mecircme nom Un meacutedicament comporte une description courte en franccedilais ainsi quune description longue en latin On gegravere aussi le conditionnement du meacutedicament cest agrave dire le nombre de pilules par boicircte (qui est un nombre entier)Agrave chaque meacutedicament on associe une liste deacutedieacutee de contre-indications geacuteneacuteralement plusieurs parfois aucune Les contre-indications sont trieacutees par ordre dimportance Lordre est total est strict pour un meacutedicament donc chaque contre-indication possegravede une importance et il nexiste pas deux contre-indications associeacutees au mecircme meacutedicament avec la mecircme importanceTout meacutedicament possegravede au moins un composant souvent plusieurs Un composant est identifieacute par un code unique et possegravede un intituleacute Tout composant peut intervenir dans la fabrication de plusieurs meacutedicaments Il existe des composants qui ne sont pas utiliseacutes pour fabriquer des meacutedicaments et que lon veut quand mecircme geacuterer

Donneacutees de test

Afin de mateacuterialiser notre base de donneacutees nous obtenons les descriptions suivantes

Le a pour description courte et pour description longue Chourix Meacutedicament contre la chute des chouxlaquo raquoVivamus fermentum semper porta Nunc diam velit adipiscing ut tristique vitae sagittis vel odio laquo

Il est conditionneacute en boicircte de 13Maecenas convallis ullamcorper ultricies Curabitur ornare raquoSes contre-indications sont

Le Chourix ne doit jamais ecirctre pris apregraves minuitLe Chourix ne doit jamais ecirctre mis au contact avec de leau

Ses composants sont le et le HG79 SN50Le a pour description courte et pour Tropas Meacutedicament contre les dysfonctionnements intellectuelslaquo raquodescription longue Suspendisse lectus leo consectetur in tempor sit amet placerat quis neque Etiam laquo

Il est conditionneacute en boicircte de 42luctus porttitor lorem sed suscipit est rutrum non raquoSes contre-indications sont

Le Tropas doit ecirctre gardeacute agrave labri de la lumiegravere du soleil

Son unique composant est le HG79Les composants existants sont

HG79 Vif-argent alleacutegeacute

ExercicesII

Exercice Eacutetudiants et UVs (introduction)

31

- - -

- - HG81 Vif-argent alourdi

SN50 Pur eacutetain

Question 1

Question 2

Question 3

2 Exercice Eacutetudiants et UVs (introduction)[20 min]

On dispose du scheacutema UML ci-apregraves qui deacutecrit des eacutetudiants des UV les notes obtenues par les eacutetudiants agrave ces UV et les diplocircmes dorigine de ces eacutetudiants

Eacutetudiants et UVs

key deacutesigne des cleacutes candidates ici toutes les cleacutes ne sont composeacutees que dun seul attributlocal key deacutesigne une cleacute localeun semestre est de la forme PYYYY ou AYYYY (ougrave YYYY deacutesigneacute une anneacutee sur 4 chiffre) exemple A2013 P2014

Rappel Notion de cleacute locale dans classes dassociation (cf p49)

Effectuez le modegravele conceptuel en UML de ce problegraveme

Indices

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans deacutedieacuteeles donneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition

[ ]solution ndeg4 [ ] p56

En mobilisant les regravegles adeacutequates proposer un modegravele logique de donneacutees correspondant en relationnel Le repeacuterage des domaines et des cleacutes est obligatoire

[ ]solution ndeg5 [ ] p57

Dessiner des tableaux remplis avec les donneacutees fournies en exemple afin de montrer que le modegravele fonctionne selon le besoin exprimeacute initialement On pourra mettre le premier mot seulement des descriptions pour gagner du temps

[ ]solution ndeg6 [ ] p57

Exercice Super-heacuteros relationnels I

32

-

-

Question

3 Exercice Super-heacuteros relationnels I[20 min]

La gamme de super-heacuteros GARVEL veut reacutealiser la base de donneacutees de leurs figurines articuleacutees La socieacuteteacute a fait reacutealiser un modegravele UML qui doit servir de point de deacutepart agrave la mise en œuvre

Modegravele UML Figurines GARVEL

Question

4 Exercice Objets Numeacuteriques Libres[30 min]

Lassociation ONL (Objets Numeacuteriques Libres) est une association de promotion des logiciels libres Elle souhaite exposer sur un site Internet une liste de logiciels libres Ce site sera adosseacute agrave une base de donneacutees relationnelle ou relationnel-objet La premiegravere eacutetape de sa deacutemarche est de reacutealiser un modegravele conceptuel repreacutesentant ce quelle souhaite faire

La base de donneacutees permet de geacuterer des applicationsLes applications sont identifieacutees par leur nom (LibreOffice Gimp) et leur version (10 21) et comportent une description courte et une URL Tous les attributs sont obligatoires Chaque application a une URL uniqueLa base de donneacutees permet de geacuterer des librairies

Traduire le scheacutema en modegravele logique relationnel ( )MLD1

On choisira obligatoirement les cleacutes primaires parmi celles neacutecessitant le plus petit nombre de bits possible pour leur codage

[ ]solution ndeg7 [ ] p57

Transformer le modegravele UML en modegravele relationnel (justifier les passages non triviaux en particulier la relation dheacuteritage)

[ ]solution ndeg8 [ ] p58

Exercice Objets Numeacuteriques Libres

33

-

-

-

-

-

-

-

-

-

-

-

-

Les librairies sont des logiciels mais pas des applications Elles ont les mecircmes attributs que les applications (nom version description courte URL) mais les URL ne sont pas neacutecessairement uniques Les applications peuvent deacutependre de librairies ou dautres applications et les librairies peuvent deacutependre dautres librairies (mais pas dune application)La base de donneacutees permet de geacuterer des composantsLes composants sont inteacutegreacutes agrave une application ou librairie Les composants ont un code interne agrave lapplication ou la librairie quil servent une version et une description courte et une URL Le code et le numeacutero de version permettent didentifier localement le composant au sein de la librairie ou de lapplication la description courte et lURL sont optionnellesLa base de donneacutees permet de geacuterer des licencesLes applications librairies et composants sont attacheacutes agrave une ou plusieurs licences identifieacutees par leur nom (GPL MPL) leur version et leur langue et comportant le texte inteacutegral de la licence Les versions des logiciels et licences sont de type numeacutero de licence majeur point numeacutero de licence mineur comme 10 ou 22La base de donneacutees permet de geacuterer des cateacutegoriesChaque logiciel est rangeacute dans une cateacutegorie principale et plusieurs cateacutegories secondaires Exemple de cateacutegories bureautique dessin multimeacutedia physique

Exemple (factice) de donneacutees

Applications

Scenari 41 une chaicircne eacuteditoriale XML httpscenariorg deacutepend de Libreoffice 43 et de ImageMagick 68Libreoffice 43 une suite bureautique WYSIWYG httplibreofficeorg

Librairie

ImageMagick 68 permet de creacuteer de convertir de modifier et dafficher des images http imagemagickorg

Composant

impng 02 est un composant de ImageMagick 68 permet de compresser une image au format PNG

Toutes ces applications librairies et composants sont disponibles sous une licence LGPL 30 et GPL 30 franccedilaisesToutes ces applications et librairies sont rangeacutees dans la cateacutegorie principale document Scenari est rangeacute dans la cateacutegorie secondaire Eacutedition WYSIWYM Libreoffice dans la cateacutegorie secondaire Bureautique ImageMagick dans la cateacutegorie secondaire Multimeacutedia

Question

Reacutealiser un MCD en UML[ ]solution ndeg9 [ ] p58

Devoirs

34

1 Exercice Arbre de scegravene 3D[30 minutes]

On souhaite pouvoir geacuterer les diffeacuterents eacuteleacutements composant des scegravenes 3D dans une base de donneacutees Une scegravene contient des objets qui eux-mecircmes peuvent appartenir agrave plusieurs scegravenes (au moins une) mais il ne peut y avoir plusieurs fois le mecircme objet dans une mecircme scegravene Dans chaque scegravene les objets peuvent ecirctre visibles ou invisibles Les scegravenes et les objets sont identifieacutes de maniegravere unique par un nom Une scegravene peut ecirctre active ou inactive Un objet a comme proprieacuteteacute une position dans lespace repreacutesenteacutee par un vecteur de reacuteels agrave trois composantes (x y z) Les objets sont organiseacutes de maniegravere hieacuterarchique un objet peut ecirctre parent de plusieurs objets et chaque objet peut avoir au plus un parent Des scripts peuvent ecirctre associeacutes agrave un objet ou agrave une scegravene (agrave lun ou agrave lautre mais pas aux deux) Un script est identifieacute de maniegravere unique par un nom et possegravede eacutegalement un attribut permettant de connaicirctre son eacutetat (actif ou inactif) Un personnage est un objet particulier qui possegravede des animations Une animation est relative agrave un personnage et est identifieacutee de maniegravere locale par un nom Agrave un objet est associeacute un maillage et celui-ci peut ecirctre utiliseacute par plusieurs objets Un maillage est identifieacute de maniegravere unique par un nom et est composeacute de plusieurs eacuteleacutements Chaque eacuteleacutement est relatif agrave un maillage et est identifieacute de maniegravere locale par un numeacutero Il existe exactement trois types deacuteleacutement des nœuds des arrecirctes et des faces Une face est deacutelimiteacutee par trois arrecirctes et chaque arrecircte est deacutelimiteacutee par deux nœuds Plusieurs arrecirctes peuvent partager un mecircme nœud et plusieurs faces peuvent partager une mecircme arrecircte Afin deacutevaluer la complexiteacute dune scegravene on souhaite pouvoir calculer le nombre de faces afficheacutees pour une scegravene donneacutee (cest-agrave-dire la somme du nombre de faces du maillage associeacute aux objets visibles de la scegravene) Un maillage possegravede plusieurs mateacuteriaux identifieacutes de maniegravere unique par un nom Un mateacuteriau peut ecirctre associeacute agrave plusieurs maillages Un mateacuteriau est caracteacuteriseacute par une couleur deacutefinie par un vecteur dentiers agrave quatre composantes rouge vert bleu alpha Un mateacuteriau peut posseacuteder une texture et celle-ci peut ecirctre utiliseacutee par plusieurs mateacuteriaux Une texture est identifieacutee de maniegravere unique par un nom et possegravede comme attribut une image

Question 1

Question 2

DevoirsIII

Proposez une clarification de ce problegraveme On pourra reclasser les informations par grande cateacutegorie scegravene objets scripts

Eacutetablissez un modegravele conceptuel en UML de ce problegraveme

Compleacutement Exercices de modeacutelisation suppleacutementaire

35

1 Exercice Appartements agrave louer[30 min]

Une agence dimmobilier (ventes et locations) veut geacuterer son parc dappartements dans une base de donneacutees Chaque appartement possegravede plusieurs piegraveces qui peuvent ecirctre des piegraveces dhabitation des piegraveces de rangement ou des commoditeacutes

Chaque piegravece a une superficie un nombre de prises eacutelectriques et des meubles Pour ces derniers on veut enregistrer le nom du modegravele et le type (chaise lit four etc) Rien nempecircche quune piegravece comporte plusieurs meubles identiques (par exemple plusieurs chaises PIN IQUEA) Les piegraveces dhabitation ont une ou plusieurs fenecirctres les piegraveces de rangement ont une ou plusieurs eacutetagegraveres et une surface de rangement utile totale On veut aussi savoir dans quelles piegraveces de rangement se situent les tableaux eacutelectriques de lappartement Finalement les piegraveces commoditeacutes peuvent ecirctre de trois types cuisine toilette ou salle de bain

Lagence veut aussi enregistrer les portes entre les diffeacuterentes piegraveces Une porte peut ecirctre agrave simple battant double battant coulissante ou une simple ouverture

Chaque appartement a une adresse une superficie totale (qui est la somme des superficies des piegraveces) et un type qui est la lettre T suivie du nombre de piegraveces dhabitation de lappartement Pour un appartement donneacute chaque piegravece est identifieacutee par un numeacutero (commenccedilant au numeacutero 1)

Lagence veut eacutegalement enregistrer le quartier ougrave se trouve lappartement auquel est lieacute un prix par megravetre carreacute Finalement elle veut garder un historique de lhistoire de lappartement les peacuteriodes pour lesquelles il est libre occupeacute en travaux ou vendu

Question

2 Exercice Objectifs[40 min]

Vous prenez la preacutesidence de lassociation Objectifs dont lobjet est daider ses eacutetudiants membres agrave mener des projets dans le cadre de leurs eacutetudes

Compleacutement Exercices de modeacutelisation suppleacutementaire

IV

Reacutealisez le diagramme UML reacutepondant aux besoins de cette agence[ ]solution ndeg10 [ ] p59

Exercice Objectifs

36

- - -

-

-

- - -

Vous constatez en arrivant dans lassociation que personne ne sait exactement quels sont les projets en cours ni qui fait quoi dans les projets Vous ne parvenez pas non plus agrave obtenir une liste exacte des partenaires sur lesquels lassociation peut compter La seule chose sur laquelle vous parvenez agrave mettre la main est un fichier tableur vaguement agrave jour

Vous deacutecidez quil est plus que temps de mettre en place une base de donneacutees afin dassurer la bonne gestion des informations les plus importantes pour lassociation Vous vous attachez pour cela agrave reacutealiser une analyse des besoins

Analysez les documents ci-apregraves

Etat des projets

Eacutetat des projets de lassociation Objectifs

Recueil de besoins

Agrave partir de leacutetude du fonctionnement actuel de lassociation vous relevez les choses importantes agrave geacuterer suivantes

Les membres de lassociation geacuteneacuteralement identifieacutes par leur preacutenomLes projets geacutereacutes par lassociation avec des dates de deacutebut et de fin preacutecises et un chef de projetLe deacutetail des tacircches de chaque projet avec leurs dates de deacutebut et de fin aussi et la liste de tous les membres qui y participentLa liste des partenaires des projets avec leur rocircle preacutecis pour chacun des projets auxquels ils participent

Afin de mieux geacuterer les attributions des projets il serait eacutegalement inteacuteressant de creacuteer une liste des speacutecialiteacutes correspondant agrave ce qui ce fait dans lassociation et daffecter une speacutecialiteacute agrave chaque membre ainsi quune agrave chaque projet pour voir si ce sont bien les membres les mieux adapteacutes qui travaille sur les projets

Recueil de donneacutees

Les discussions avec les anciens membres de lassociation vous apprennent les choses suivantes

Lassociation a termineacute de geacuterer les trois projets Comeacutedie Musicale geacutereacutee par Nathalie sur les trois premiers mois du semestre dautomne 1001 Science en fecircte geacutereacutee par Pierre sur tout le semestre de printemps 1003 et Nuit du picolo geacutereacutee par Julien en novembre 1001Les speacutecialiteacutes recenseacutees pour le moment sont Ville Universiteacute Sport Entreprise Culture InternationalIl faut au moins dix membres agrave lassociation (sinon elle ferme) recruter ceux qui manquentAidez lassociation agrave diviser ses projets en tacircches

Exercice Objectifs

37

- Les partenaires suivants aident ou ont aideacute lassociation la mairie pour la comeacutedie musicale et la science en fecircte qui apporte un soutien financier le ministegravere de la culture qui apporte son soutien logistique agrave la science en fecircte lassociation des commerccedilants de la ville qui apporte son soutien publicitaire agrave la comeacutedie musicale 1664 qui offre ses biegraveres agrave moitieacute prix pour la nuit du Picolo

Question 1

Question 2

Question 3

Afin de preacuteparer une analyse des besoins sommaire listez les donneacutees que vous devrez geacuterer agrave laide des documents et recueils de discussion agrave votre disposition Faites des hypothegraveses lorsque les donneacutees sont incomplegravetes ou incoheacuterentes

[ ]solution ndeg11 [ ] p59

Reacutealiser le MCD en UML et en E-A agrave partir des donneacutees preacutepareacutees dans la question preacuteceacutedente[ ]solution ndeg12 [ ] p60

Reacutealiser le MLD en relationnel en traduisant votre MCD[ ]solution ndeg13 [ ] p61

Contenus annexes

38Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

- - -

gt Attributs

Un attribut est une information eacuteleacutementaire qui caracteacuterise une classe et dont la valeur deacutepend de lobjet instancieacute

Le domaine des valeurs que peut prendre lattribut est fixeacute a prioriUn attribut est typeacute

Il peut prendre plusieurs valeurs distinctes dans son domaineUn attribut peut ecirctre multivalueacute Sa valeur alors est une fonction sur dautres attributs de la classeUn attribut peut ecirctre deacuteriveacute

(ou composite) Il joue alors le rocircle dun groupe dattributs (par Un attribut peut ecirctre composeacuteexemple une adresse peut ecirctre un attribut composeacute des attributs numeacutero type de voie nom de la voie) Cette notion renvoie agrave la notion de variable de type dans les langages de Record

programmation classiques

En UML on preacutefegravere lusage de meacutethodes aux attributs deacuteriveacutes On utilisera toujours des meacutethodes degraves que la valeur de lattribut deacuteriveacute deacutepend dautres attributs exteacuterieurs agrave sa classeEn UML on preacutefegravere lusage de compositions aux attributs composeacutes On utilisera toujours des compositions pour les attributs composeacutes et multivalueacutes

1 attributtype2 attribut_multivalueacute[nbMinValeursnbMaxValeurs]type3 attribut_deacuteriveacutetype4 attribut_composeacute5   - sous-attribut1type6   - sous-attribut2type7   -

Contenus annexes

Deacutefinition Attribut

Attention On utilise peu les attributs deacuteriveacutes et composeacutes en UML

Syntaxe

attributtype

attribut_multivalueacute[nbMinValeursnbMaxValeurs]type

attribut_deacuteriveacutetype

attribut_composeacute

  - sous-attribut1type

  - sous-attribut2type

  -

Contenus annexes

39Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Repreacutesentation dattributs en UML

Dans cet exemple les attributs Nom Preacutenom sont de type lun de 20 caractegraveres et lautre de 10 stringtandis que DateNaissance est de type et Age de type Preacutenom est un attribut multivalueacute ici date integerune personne peut avoir de 1 agrave 3 preacutenoms Age est un attribut deacuteriveacute il est calculeacute par une fonction sur DateNaissance

Meacutethodes (cf p39)

Composition (cf p5)

gt Meacutethodes

Une meacutethode (ou opeacuteration) est une fonction associeacutee agrave une classe dobjet qui permet dagir sur les objets de la classe ou qui permet agrave ces objets de renvoyer des valeurs (calculeacutees en fonction de paramegravetres)

1 methode(paramegravetres)type

Pour la modeacutelisation des bases de donneacutees les meacutethodes sont surtout utiliseacutees pour repreacutesenter des donneacutees calculeacutees (agrave linstar des attributs deacuteriveacutees) ou pour mettre en exergue des fonctions importantes du systegraveme cible Seules les meacutethodes les plus importantes sont repreacutesenteacutees lapproche est moins systeacutematique quen modeacutelisation objet par exemple

Lors de la transformation du modegravele conceptuel UML en modegravele logique relationnel les meacutethodes ne Leur repeacuterage au niveau conceptuel sert donc surtout daide-seront geacuteneacuteralement pas impleacutementeacutees

meacutemoire pour limpleacutementation au niveau applicatif

Exemple La classe Personne

Compleacutement Voir aussi

Deacutefinition Meacutethode

Syntaxe

Remarque Meacutethodes et modeacutelisation de BD

Remarque Meacutethodes relationnel relationnel-objet

methode(paramegravetres)type

Contenus annexes

40Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Au contraire un modegravele logique relationnel-objet permettra limpleacutementation de meacutethodes directement associeacutees agrave des tables Leur repeacuterage au niveau conceptuel est donc encore plus important

Transformation des meacutethodes par des vues (cf p40)

gt Transformation des meacutethodes par des vues

Lorsquune meacutethode est speacutecifieacutee sur un diagramme UML pour une classe C si cette meacutethode est une fonction relationnelle (elle renvoie une unique valeur et elle peut ecirctre reacutesolue par une requecircte SQL) alors on creacutee une vue qui reprend les attributs de la classe C et ajoute des colonnes calculeacutees pour les meacutethodes

Les attributs deacuteriveacutes eacutetant apparenteacutes agrave des meacutethodes ils peuvent eacutegalement ecirctre geacutereacutes par des vues

gt Classe dassociation

On utilise la notation des classes dassociation lorsque lon souhaite ajouter des proprieacuteteacutes agrave une association

Notation dune classe dassociation en UML

On reacuteserve en geacuteneacuteral les classes dassociation aux associations NM

Il est toujours possible de reacuteduire une classe dassociation sur une association 1N en migrant ses attributs sur la classe cocircteacute N et cest en geacuteneacuteral plus lisible ainsi

Compleacutement

Meacutethode

Remarque Attributs deacuteriveacutes

Deacutefinition Classe dassociation

Syntaxe Notation dune classe dassociation en UML

Meacutethode

Contenus annexes

41Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

-

Emplois

Selon le standard UML une classe dassociation est une classe et agrave ce titre elle peut ecirctre mobiliseacutee dans dautres associations ou dans des heacuteritages Nous deacuteconseillons neacuteanmoins ces notations qui ont tendance agrave complexifier la lecture et la transformation du diagramme

Nous conseillons donc de ne jamais associer une classe dassociation

gt Transformation des attributs

Pour chaque attribut eacuteleacutementaire et monovalueacute dune classe

on creacutee un attribut correspondant

Attribut

Classe1(ab)

Pour chaque attribut composite comprenant N sous-attributs dune classe

on creacutee N attributs correspondantsdont les noms sont la concateacutenation du nom de lattribut composite avec celui du sous-attribut

Exemple Exemple de classe dassociation

Conseil

Meacutethode Attributs simples

Meacutethode Attributs composites

Contenus annexes

42Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- - - -

Attribut composeacute

Classe1(ab_b1b_b2)

Pour chaque attribut multivalueacute b dune classe C

on creacutee une nouvelle relation RBqui comprend un attribut monovalueacute correspondant agrave bplus la cleacute de la relation repreacutesentant C la cleacute de RB est la concateacutenation des deux attributs

Attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Dans le cas ougrave le nombre maximum de est fini et petit on peut eacutegalement adopter la transformation b

suivante Classe1(ab1b2b3b4b5b6b7b8b9b10)

Si le nombre dattributs est infini ( ) cest impossible sil est trop grand ce nest pas souhaitableb[1]

On combine les regravegles eacutenonceacutees pour les attributs composeacutes et pour les attributs multivalueacutes

Attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Transformation des compositions (cf p42)

Meacutethode Attributs multivalueacutes

Meacutethode Attributs multivalueacutes (meacutethode alternative)

Meacutethode Attributs composeacutes multivalueacutes

Rappel Voir aussi

Contenus annexes

43Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

gt Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Compleacutement Attributs multivalueacutes et composeacutes

Contenus annexes

44Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

Rappel Voir aussi

Rappel

Meacutethode

Contenus annexes

45Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p48)

gt Transformation des associations 1N

Pour chaque association binaire de type 1N

on ajoute agrave la relation cocircteacute N une cleacute eacutetrangegravere vers la relation cocircteacute 1

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Meacutethode

Contenus annexes

46Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Association 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Contrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p46)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

R1

Compleacutement

Rappel

Meacutethode

Contenus annexes

47Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p47)

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Deacutefinition Projection

Contenus annexes

48Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Deacutefinition Projection

Contenus annexes

49Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Transformation des classes dassociation

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de lassociation NM

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Meacutethode Classe dassociation NM

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Classe dassociation avec cleacute locale

9

Dans une associations NM on peut avoir des (vraies) cleacutes ou des cleacutes locales En revanche dans une composition on na que des cleacutes locales en effet si le composant est identifiable indeacutependamment de son composite cest en geacuteneacuteral quil a une vie propre et donc que lon est pas en preacutesence dune composition

17 Classe dassociation avec cleacute locale

Classe dassociation (cf p40)

Dans lexemple suivant chaque personne peut avoir un emploi dans plusieurs socieacuteteacutes mais elle ne peut pas avoir plusieurs emplois dans une mecircme socieacuteteacute

Emplois

La transformation en relationnelle est coheacuterente avec cette contrainte

1 Socieacuteteacute()2 Personne()3 Emploi(personne=gtPersonne societe=gtSociete postestring salaireinteger quotitenumeric(12))

La speacutecification dune cleacute locale dans emploi par exemple ici le poste permet de lever cette contrainte lorsquon le souhaite en permettant didentifier chaque instance de lassociation ici lemploi dune personne par sa socieacuteteacute

Attention

Rappel

Contrainte inheacuterente agrave la relation NM

Meacutethode Inteacuterecirct de la cleacute locale

Socieacuteteacute()

Personne()

Emploi(personne=gtPersonne societe=gtSociete postestring salaireinteger

quotitenumeric(12))

Associations ternaires

10

La transformation en relationnelle permettra de maintenir la modeacutelisation en ajoutant la cleacute locale agrave la cleacute initiale

1 Socieacuteteacute()2 Personne()3 Emploi(personne=gtPersonne societe=gtSociete postestring salaireinteger quotitenumeric(72))

18 Associations ternaires

Notation dune association ternaire

Il est toujours possible de reacuteeacutecrire une association ternaire avec trois associations binaires en transformant lassociation en classe

Syntaxe

Conseil Ne pas abuser des associations ternaires

Socieacuteteacute()

Personne()

Emploi(personne=gtPersonne societe=gtSociete postestring salaireinteger

quotitenumeric(72))

Passage UML-Relationnel Associations avanceacutees

11

En pratique on nutilise jamais en UML dassociation de degreacute supeacuterieur agrave 3

2 Passage UML-Relationnel Associations avanceacuteesObjectifs

Savoir faire le passage dun scheacutema conceptuel UML agrave un scheacutema relationnel dans tous les cas

Reconnaicirctre les cas de transformation qui se traitent toujours de la mecircme faccedilon et ceux qui neacutecessite une modeacutelisation compleacutementaire

21 Trousseau de cleacutes

En UML et en relationnel il existe plusieurs termes mobilisant le mot laquo cleacute raquo le seul concept qui est commun est le concept de Tous les autres sont speacutecifiques au niveau conceptuel ou relationnelcleacute

Cleacute (key)

Cleacute locale (local key)

Cleacute (key)

Cleacute candidate (candidate key)

Cleacute primaire (primary key) et Cleacute alternative (alternate key)

Cleacute artificielle (surrogate key) et Cleacute naturelle (natural key business key)

Cleacute eacutetrangegravere (foreign key)

Conseil Pas de degreacute supeacuterieur agrave 3

Attention

Rappel Concept commun au niveau UML et relationnel

Rappel Concept speacutecifique au niveau UML

Rappel Concepts speacutecifiques au niveau relationnel

Transformation des compositions

12

- -

Deacutefinition des cleacutes en relationnel

22 Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Transformation des agreacutegations

13

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

23 Transformation des agreacutegations

Les associations de type agreacutegation se traitent de la mecircme faccedilon que les associations classiques

Agreacutegation 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Compleacutement Attributs multivalueacutes et composeacutes

Rappel Voir aussi

Rappel Agreacutegation

Transformation des classes dassociation avec cleacute locale

14

- -

Agreacutegation NM

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2)

24 Transformation des classes dassociation avec cleacute locale

Les attributs de la classe dassociation

sont ajouteacutes agrave la relation issue de lassociation NM la cleacute locale de la classe dassociation est concateacuteneacutee aux cleacutes eacutetrangegraveres composant deacutejagrave la cleacute primaire de la relation dassociation

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Meacutethode Classe dassociation NM

Exercice

15

25 Correspondance entre UML et relationnel

Passsage UML vers Relationnel

Exercice

16

26 ExerciceQuel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

[ ]solution ndeg2 [ ] p53

Exercice

17

27 ExerciceSoit le scheacutema UML suivant

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

[ ]solution ndeg3 [ ] p54

Modeacutelisation avanceacutee des associations 11 en relationnel

18

-

- -

-

-

3 Modeacutelisation avanceacutee des associations 11 en relationnelObjectifs

Savoir faire le passage dun scheacutema conceptuel UML agrave un scheacutema relationnel

Connaicirctre les choix possibles pour le cas de lassociation 11 et savoir faire le meilleur choix

Il existe des formulations conceptuelles en UML qui sont plus deacutelicates agrave traduire au niveau logique en relationnel comme lassociation 11 Ces cas requiegraverent un choix eacuteclaireacute de la part du concepteur

31 Transformation des associations 11 (approche geacuteneacuterale)

Il existe deux solutions pour transformer une association 11

Avec deux relations on traite lassociation 11 comme une association 1N puis lon ajoute une contrainte UNIQUE sur la cleacute eacutetrangegravere pour limiter la cardinaliteacute maximale agrave 1 Avec une seule relation on fusionne les deux classes en une seule relation

Association 11

Une des deux relations est choisie pour porter la cleacute eacutetrangegravere on ajoute les contraintes ou (cleacute candidate) sur la cleacute eacutetrangegravere et si neacutecessaire une UNIQUE KEY

contrainte imposant linstanciation simultaneacutee des deux relations

Classe1(abc=gtClasse2) avec c UNIQUE ou KEY

Classe2(cd)

ou

Classe1(ab)

Classe2(cda=gtClasse1) avec a UNIQUE ou KEY

On creacuteeacute une seule relation contenant lensemble des attributs des deux classes

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Meacutethode Avec deux relations (cleacute eacutetrangegravere)

Meacutethode Avec une relation (fusion)

Transformation des associations 1111

19

- -

- - - - - -

- on choisit une cleacute parmi les cleacutes candidates

Classe12(abcd) avec c UNIQUE ou KEY

ou

Classe21(cdab) avec a UNIQUE ou KEY

Ce choix entre les deux meacutethodes sera conduit par une appreacuteciation du rapport entre

La complexiteacute introduite par le fait davoir deux relations lagrave ou une suffitLa pertinence de la seacuteparation des deux relations dun point de vue seacutemantiqueLes pertes de performance dues agrave leacuteclatement des relationsLes pertes de performance dues au fait davoir une grande relationLes questions de seacutecuriteacute et de sucircreteacute factoriseacutees ou non au niveau des deux relations

Dans le cas dune association 1111 il faudra ajouter une contrainte compleacutementaire

Transformation des associations 1111 (cf p19)

32 Transformation des associations 1111

Le plus souvent cest meacutethode par des relations qui est la plus adapteacutee agrave ce casfusionLorsquelle ne lest pas et que lon choisit deux relations il faut ajouter une contrainte dynamique qui controcirclera que les deux relations sont bien toujours instancieacutees ensembles Notons que la cleacute eacutetrangegravere peut ecirctre choisie comme cleacute primaire

Association 11

Classe12(abcd) avec c KEY

ou

Classe21(cdab) avec a KEY

ou

Classe1(abc=gtClasse2) avec c KEY

Classe2(cd)

Contrainte PROJECTION(Classe1c) = PROJECTION(Classe2c)

ou

Classe1(ab)

Remarque Fusion des relations dans le cas de la traduction de lassociation 11

Compleacutement

Meacutethode Association 1111

Transformation des associations 0111

20

-

-

-

-

Classe2(cda=gtClasse1) avec a KEY

Contrainte PROJECTION(Classe1a) = PROJECTION(Classe2a)

La contrainte dynamique exprimeacutee ici suit le mecircme principe que pour les association 1NContrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p44)

33 Transformation des associations 0111

Le plus souvent cest la meacutethode par les deux relations qui est la plus adapteacutee on choisira toujours la relation cocircteacute 01 pour ecirctre reacutefeacuterenccedilante

Il est possible dutiliser la fusion dans ce cas les cleacutes cocircteacute 01 deviennent des attributs il ne UNIQUE

peuvent plus ecirctre cleacutes pouvant ecirctre NULL

Association 011

Classe1(abc=gtClasse2) avec c KEY

Classe2(cd)

ou

Classe12(cdab) avec a UNIQUE

34 Transformation des associations 0101

On choisit la solution avec deux relations dun cocircteacute ou de lautre la cleacute eacutetrangegravere est associeacute agrave la contrainte ce nest pas une cleacute car elle peut ecirctre nulleUNIQUE

Il nest pas souhaitable de choisir la fusion lune des deux relations pouvant ecirctre nulle on ne pourrait plus trouver de cleacute naturelle

Association 0101

Classe1(abc=gtClasse2) avec c UNIQUE

Classe2(cd)

ou

Compleacutement Contrainte dynamique

Meacutethode Association 0111

Meacutethode Association 0101

Exemple de choix pour une relation 11

21

-

- -

-

-

Classe1(ab)

Classe2(cda=gtClasse1) avec a UNIQUE

35 Exemple de choix pour une relation 11

Soit deux entiteacutes homme et femme et une association mariage de cardinaliteacute 1111 entre ces deux entiteacutes (hommes et femmes sont donc obligatoirement marieacutes)Les entiteacutes homme et femme sont identifieacutees par un attribut nom (dans ce modegravele chaque personne a un nom unique on pourrait remplacer le nom par un identifiant comme le numeacutero de seacutecuriteacute social ou par une cleacute artificielle pour ecirctre plus proche de la reacutealiteacute)

Bien que de type 1111 le choix de la fusion nest pas tregraves opportun car il sagit bien dobjets distincts que lon veut modeacuteliser

On choisira donc plutocirct la repreacutesentation avec deux relationsLa cleacute eacutetrangegravere pourra ecirctre du cocircteacute homme ou femme mecircme si la pratique dominante nous incite agrave la mettre du cocircteacute femmeOn pourra eacutegalement deacutecider de prendre la cleacute eacutetrangegravere comme cleacute primaire

1 homme (nom)2 femme (mariage=gthomme nom) avec nom KEY3 Contrainte PROJ(hommenom) = PROJ(femmemariage)

Si lassociation avait eacuteteacute de cardinaliteacute 0101 (certains hommes et femmes ne sont pas marieacutes) un choix similaire se serait imposeacute avec limpossibiliteacute de choisir la cleacute eacutetrangegravere comme cleacute primaire celle-ci pouvant ecirctre nulle et neacutetant donc plus candidate

1 homme (nom)2 femme (nom mariage=gthomme) avec mariage UNIQUE

4 Autres eacuteleacutements utiles en UML packages et steacutereacuteotypesObjectifs

Maicirctriser le diagramme de classe UML dans le cas de la conception de BD

41 Paquetages

Les paquetages (plus communeacutement appeleacutes ) sont des eacuteleacutements servant agrave organiser un modegravelepackage

Ils sont particuliegraverement utiles degraves que le modegravele comporte de nombreuses classes et que celles-ci peuvent ecirctre trieacutees selon plusieurs aspects structurants

Exemple

Exemple

Deacutefinition Package

homme (nom)

femme (mariage=gthomme nom) avec nom KEY

Contrainte PROJ(hommenom) = PROJ(femmemariage)

homme (nom)

femme (nom mariage=gthomme) avec mariage UNIQUE

Steacutereacuteotype

22

Notation des paquetages en UML

Exemple dutilisation des packages

On repreacutesente chaque classe au sein dun Il est alors possible de faire une preacutesentation globale du packagemodegravele (tous les ) partielle (une partie des ) ou centreacutee sur un seul packages packages package

Pour une repreacutesentation partielle ou centreacutee sur un on repreacutesente les concerneacutes avec leurs package packagesclasses propres ainsi que toutes les classes lieacutees des autres packages (et seulement celles-ci)

Preacutesentation partielle du modegravele centreacutee sur un package

Syntaxe

Exemple

Meacutethode

Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt

23

42 Steacutereacuteotype

Un steacutereacuteotype UML est une syntaxe permettant dajouter de la seacutemantique agrave la modeacutelisation des classes Il permet de deacutefinir des afin de regrouper conceptuellement un ensemble de classes (agrave linstar types de classedune classe qui permet de regrouper conceptuellement un ensemble dobjets)

Cest une meacutecanique de meacuteta-modeacutelisation elle permet deacutetendre le meacuteta-modegravele UML cest agrave dire le modegravele conceptuel du modegravele conceptuel

Un meacuteta-modegravele est le modegravele dun modegravele Par exemple le meacuteta-modegravele UML comprend les concepts de classe attribut association cardinaliteacute composition agreacutegation contraintes annotations On mobilise ces concepts (on les instancie) pour exprimer un modegravele particulier suivant le formalisme UML

Les steacutereacuteotypes permettent donc dajouter au meacuteta-modegravele UML standard celui que tout le monde utilise des concepts locaux pour enrichir le langage de modeacutelisation que lon utilise pour reacutealiser des modegraveles

Notation dun steacutereacuteotype en UML

Un steacutereacuteotype speacutecifique enrichit le meacuteta-modegravele UML mais selon une seacutemantique qui est propre agrave celui qui la poseacute non standard donc La conseacutequence est que pour un tiers linterpreacutetation du steacutereacuteotype nest plus normaliseacutee et sera potentiellement plus facilement erroneacutee Il convient donc de ne pas abuser de cette meacutecanique

Deux ou trois steacutereacuteotypes speacutecifiques correctement deacutefinis sont faciles agrave transmettre plusieurs dizaines repreacutesenteraient un nouveau langage complet agrave apprendre pour le lecteur du modegravele

Il existe des steacutereacuteotypes fournit en standard par UML ou communeacutement utiliseacutes par les modeacutelisateurs Lavantage est quil seront compris plus largement au mecircme titre que le reste du meacuteta-modegravele (ils ont une valeur de standard)

43 Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt

Deacutefinition Steacutereacuteotype UML

Deacutefinition Meacuteta-modegravele

Syntaxe

Conseil Steacutereacuteotypes speacutecifiques et steacutereacuteotypes standard

Syntaxe

Type utilisateurs steacutereacuteotype ltltdataTypegtgt

24

Steacutereacuteotype UML permettant dexprimer une eacutenumeacuteration

Exemple de modeacutelisation UML deacutenumeacuteration

44 Type utilisateurs steacutereacuteotype ltltdataTypegtgt

Les types utilisateurs permettent de deacutefinir des types complexes propres en extension des types primaires (entier chaicircne date)

Steacutereacuteotype dataType

Steacutereacuteotype dataType (exemple)

Cette modeacutelisation est eacutequivalente agrave la modeacutelisation des attributs composeacutes directement dans la classe principale Cest une repreacutesentation plus standard en UML

Exemple

Syntaxe

Exemple

Meacutethode Attributs composeacutes

Synthegravese sur la modalisation UML et relationnelle

25

Quelques eacuteleacutements de stylistique UML

26

-

- -

-

-

-

- - -

- - - -

1

2

3

5 Synthegravese sur la modalisation UML et relationnelle51 Quelques eacuteleacutements de stylistique UML

Toutes les associations doivent ecirctre nommeacutees (sauf composition heacuteritage agreacutegation)Ne pas utiliser de nom geacuteneacuterique pour les Classes comme Entiteacute Classe Objet TrucEacuteviter les noms geacuteneacuteriques pour les associations (comme est associeacute agrave)Attention au sens des compositions et agreacutegation le losange est cocircteacute ensemble et noubliez pas les cardinaliteacutes notamment cocircteacute parties

Nutilisez pas le souligneacute ni les en UML pour identifier les cleacutes preacutefeacuterez la contrainte keyPreacutefeacuterez lheacuteritage aux booleacuteens de typage en UMLLes attributs deacuteriveacutes sont reacuteserveacutes aux deacuterivations simples (des attributs de la mecircme classe) si cest plus complexe preacutefeacuterez des meacutethodes (et dans le doute preacutecisez les modes de calcul sur le scheacutema ou dans une note agrave part)Donnez des exemples de contenu lorsque ce nest pas eacutevident (lorsque le couple nom dattribut et type ne permet pas de faccedilon eacutevidente de comprendre de quoi lon parle)Inutile de deacuteclarer le type booleacuteen en UML utilisez-le directement comme un type de donneacutees connu

Si tous vos heacuteritages sont exclusifs notez-le agrave part pour alleacuteger votre scheacutema (et eacuteviter labondance de XOR)

52 Attention aux cleacutes artificielles

en UML on ne pose jamais de cleacutes artificiellesen relationnel on pose rarement des cleacute artificielles sauf dans le cas de cleacutes eacutetrangegraveres vraiment trop compliqueacuteesen SQL on peut poser des cleacutes artificielles si on a une bonne raison (ce nest donc pas systeacutematique et cest agrave justifier)

On najoutera pas de cleacute artificielle en UML au moment de la modeacutelisation conceptuelle des donneacutees

Formellement en UML la notion de cleacute nexiste pas (contrairement agrave l ) elle est ajouteacutee par les E-A

pratiquants des BD

Logiquement on a pas besoin de cette notion en UML les cleacutes artificielles servent en relationnel et dans certains cas uniquementPratiquement cela peut conduire agrave des situations absurdes (comme enlever au niveau logique des cleacutes artificielles ajouteacutees au niveau conceptuel)

Attention

Conseil

Compleacutement

Fondamental

Cleacutes artificielles et niveau conceptuel

Bibliographie commenteacutee sur la modeacutelisation UML

27

-

-

- -

-

- -

-

-

3

4

5

si on fait du non-relationnel on ne doit pas ajouter de cleacutes artificielles dans certains cas (limbrication typiquement) cela arrive mecircme en relationnel avec la transformation de lheacuteritage (dans certains cas toujours)

Meacutethodologiquement il faut se concentrer agrave chaque phase sur ce qui est important donc au moment du MCD on traduit les besoins on repegravere les contraintes explicites (cleacute uniciteacute non nulliteacute) sans se preacuteoccuper de ce qui sera rendu neacutecessaire par la suite par la modeacutelisation relationnelle (les cleacutes eacutetrangegraveres par exemple) ou limpleacutementation (loptimisation par exemple) Agrave chaque jour suffit sa peine Peacutedagogiquement enfin les deacutebutants ont tendance (agrave cause des environnements de conception graphique comme phpMyAdmin notamment) agrave systeacutematiser les cleacutes artificielles en SQL (on pourrait en discuter) mais eacutegalement agrave ne pas faire le travail de recherche des cleacutes naturelles (au niveau relationnel notamment ce qui est une faute de modeacutelisation) Donc au plus tard on fait intervenir les cleacutes artificielles au plus on a une chance de penser aux cleacutes naturelles

Soit le modegravele relationnel suivant

1 Etu (id numEtu) avec numEtu cleacute 2 UV (id codeUv) avec codeUv cleacute3 Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

La question qui permet dafficher la liste des eacutetudiants (numEtu) avec leurs UVs (codeUv) neacutecessite une jointure des cleacutes artificielles Un modegravele sans ces cleacutes artificielles aurait eacuteteacute plus performant pour agrave causereacutepondre agrave cette question puisque toutes les informations se trouvent dans la relation Inscriptions

1 Etu (numEtu) 2 UV (codeUv) 3 Inscriptions (uv=gtUV etu=gtEtu)

Ne soyez pas systeacutematiqueIl est en effet freacutequent dans un projet reacuteel dadopter des cleacutes artificielles presque systeacutematiquement vous pourrez le faire en connaissance de cause quand vous aurez bien compris pourquoi cest inteacuteressant et quand ccedila ne lest pasLes cleacutes artificielles sont inteacuteressantes pour autre chose que les performances (leacutevolutiviteacute par exemple choisissez-les quand vous savez pourquoi)Les cleacutes artificielles ne dispensent pas de rechercher les cleacutes naturelles Les cleacutes artificielles ne sont pas la seule faccedilon doptimiser une base de donneacutees (indexation deacutenormalisation)

53 Bibliographie commenteacutee sur la modeacutelisation UML

Il existe de nombreux outils de modeacutelisation UML On pourra citer

logiciel Open Source et multi-plateformes facile dusage (qui marche neacuteanmoins mieux sur Linux Dia

que sur Windows)

(version gratuite)Objecteering

Cleacutes artificielles et optimisation est-il toujours plus performant dutiliser des cleacutes artificielles

Conseil

Compleacutement Outils de modeacutelisation UML

Etu (id numEtu) avec numEtu cleacute

UV (id codeUv) avec codeUv cleacute

Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

Etu (numEtu)

UV (codeUv)

Inscriptions (uv=gtUV etu=gtEtu)

Bibliographie commenteacutee sur la modeacutelisation UML

28

- - - - - -

- - - - - -

Agrave voir eacutegalement en Open Source ou (non testeacute par lauteur)ArgoUML EclipseUML

UML2 en action

Pour un aperccedilu plus deacutetailleacute des possibiliteacutes dexpression du diagramme de classe UML lire le chapitre 7 Deacuteveloppement du modegravele statique (pages 133 agrave 163)

On pourra notamment y trouver

Lassociation dagreacutegationLes proprieacuteteacutes dassociationLexpression de rocircles dans les associationsLes attributs de classeLes qualificatifsLes opeacuterations (ou meacutethodes)

Le chapitre donne de plus des conseils meacutethodologiques pour la conception (voir en particulier la synthegravese page 163)

On pourra eacutegalement y trouver

Des principes de choix de modeacutelisation entre attributs et classes et sur la segmentation des classesDes principes de seacutelection des attributs (redondance avec les associations avec les classes etc)Des principes de seacutelection des associationsDes principes de choix de cardinaliteacute (notamment pour la gestion dhistorisation)Des principes de seacutelection des relations de geacuteneacuteralisation (heacuteritage)Des principes dintroduction de meacutetaclasses (type)s

U M L e n Franccedilais

Une tregraves bonne reacutefeacuterence en ligne sur la modeacutelisation UML avec des cours des liens vers la norme etc

Le contenu deacutepasse tregraves largement lusage dUML pour la modeacutelisation de BD (et ne fait dailleurs pas de reacutefeacuterence preacutecise agrave ce sous-ensemble particulier)

On pourra consulter en particulier le chapitre sur les diagrammes de classe httpumlfreefrcoursi-p14html

UML en 5 eacutetapes

On consultera en particulier le tutoriel sur les diagrammes de classe httpdeveloppeurjournaldunetcomtutorielcpt010607cpt_umlintroshtml

Cinq petits conseils pour un scheacutema UML efficace

Compleacutement Modeacutelisation UML

Compleacutement Reacutefeacuterence UML en ligne

Compleacutement Tutoriel sur la modeacutelisation UML

Compleacutement Conseils

Synthegravese Les diagrammes de modeacutelisation conceptuelle

29

-

-

- -

-

- -

-

-

- -

-

- - - -

-

-

(chapitre 3)UML2 par la pratique

Des explications exemples et eacutetudes de cas

54 Synthegravese Les diagrammes de modeacutelisation conceptuelle

Un modegravele conceptuel peut ecirctre repreacutesenteacute sous forme de diagramme E-A ou sous forme de diagramme de classe UML

Classe ou Entiteacute

Attribut ou Proprieacuteteacute

TypeacuteMulti-valueacuteComposeacuteDeacuteriveacute

Meacutethode

ParamegravetresValeur de retour

Association

Association

VerbeCardinaliteacute

Heacuteritage

Heacuteritage dattributsHeacuteritage de meacutethodes

Composition (ou entiteacute faible)

Cardinaliteacute

Compleacutement Pratique

Exercices

30

-

-

-

-

-

-

-

1 2

1

1 Exercice Lab III[20 min]

Description du problegraveme

Un laboratoire souhaite geacuterer les meacutedicaments quil conccediloit

Un meacutedicament est deacutecrit par un nom qui permet de lidentifier En effet il nexiste pas deux meacutedicaments avec le mecircme nom Un meacutedicament comporte une description courte en franccedilais ainsi quune description longue en latin On gegravere aussi le conditionnement du meacutedicament cest agrave dire le nombre de pilules par boicircte (qui est un nombre entier)Agrave chaque meacutedicament on associe une liste deacutedieacutee de contre-indications geacuteneacuteralement plusieurs parfois aucune Les contre-indications sont trieacutees par ordre dimportance Lordre est total est strict pour un meacutedicament donc chaque contre-indication possegravede une importance et il nexiste pas deux contre-indications associeacutees au mecircme meacutedicament avec la mecircme importanceTout meacutedicament possegravede au moins un composant souvent plusieurs Un composant est identifieacute par un code unique et possegravede un intituleacute Tout composant peut intervenir dans la fabrication de plusieurs meacutedicaments Il existe des composants qui ne sont pas utiliseacutes pour fabriquer des meacutedicaments et que lon veut quand mecircme geacuterer

Donneacutees de test

Afin de mateacuterialiser notre base de donneacutees nous obtenons les descriptions suivantes

Le a pour description courte et pour description longue Chourix Meacutedicament contre la chute des chouxlaquo raquoVivamus fermentum semper porta Nunc diam velit adipiscing ut tristique vitae sagittis vel odio laquo

Il est conditionneacute en boicircte de 13Maecenas convallis ullamcorper ultricies Curabitur ornare raquoSes contre-indications sont

Le Chourix ne doit jamais ecirctre pris apregraves minuitLe Chourix ne doit jamais ecirctre mis au contact avec de leau

Ses composants sont le et le HG79 SN50Le a pour description courte et pour Tropas Meacutedicament contre les dysfonctionnements intellectuelslaquo raquodescription longue Suspendisse lectus leo consectetur in tempor sit amet placerat quis neque Etiam laquo

Il est conditionneacute en boicircte de 42luctus porttitor lorem sed suscipit est rutrum non raquoSes contre-indications sont

Le Tropas doit ecirctre gardeacute agrave labri de la lumiegravere du soleil

Son unique composant est le HG79Les composants existants sont

HG79 Vif-argent alleacutegeacute

ExercicesII

Exercice Eacutetudiants et UVs (introduction)

31

- - -

- - HG81 Vif-argent alourdi

SN50 Pur eacutetain

Question 1

Question 2

Question 3

2 Exercice Eacutetudiants et UVs (introduction)[20 min]

On dispose du scheacutema UML ci-apregraves qui deacutecrit des eacutetudiants des UV les notes obtenues par les eacutetudiants agrave ces UV et les diplocircmes dorigine de ces eacutetudiants

Eacutetudiants et UVs

key deacutesigne des cleacutes candidates ici toutes les cleacutes ne sont composeacutees que dun seul attributlocal key deacutesigne une cleacute localeun semestre est de la forme PYYYY ou AYYYY (ougrave YYYY deacutesigneacute une anneacutee sur 4 chiffre) exemple A2013 P2014

Rappel Notion de cleacute locale dans classes dassociation (cf p49)

Effectuez le modegravele conceptuel en UML de ce problegraveme

Indices

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans deacutedieacuteeles donneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition

[ ]solution ndeg4 [ ] p56

En mobilisant les regravegles adeacutequates proposer un modegravele logique de donneacutees correspondant en relationnel Le repeacuterage des domaines et des cleacutes est obligatoire

[ ]solution ndeg5 [ ] p57

Dessiner des tableaux remplis avec les donneacutees fournies en exemple afin de montrer que le modegravele fonctionne selon le besoin exprimeacute initialement On pourra mettre le premier mot seulement des descriptions pour gagner du temps

[ ]solution ndeg6 [ ] p57

Exercice Super-heacuteros relationnels I

32

-

-

Question

3 Exercice Super-heacuteros relationnels I[20 min]

La gamme de super-heacuteros GARVEL veut reacutealiser la base de donneacutees de leurs figurines articuleacutees La socieacuteteacute a fait reacutealiser un modegravele UML qui doit servir de point de deacutepart agrave la mise en œuvre

Modegravele UML Figurines GARVEL

Question

4 Exercice Objets Numeacuteriques Libres[30 min]

Lassociation ONL (Objets Numeacuteriques Libres) est une association de promotion des logiciels libres Elle souhaite exposer sur un site Internet une liste de logiciels libres Ce site sera adosseacute agrave une base de donneacutees relationnelle ou relationnel-objet La premiegravere eacutetape de sa deacutemarche est de reacutealiser un modegravele conceptuel repreacutesentant ce quelle souhaite faire

La base de donneacutees permet de geacuterer des applicationsLes applications sont identifieacutees par leur nom (LibreOffice Gimp) et leur version (10 21) et comportent une description courte et une URL Tous les attributs sont obligatoires Chaque application a une URL uniqueLa base de donneacutees permet de geacuterer des librairies

Traduire le scheacutema en modegravele logique relationnel ( )MLD1

On choisira obligatoirement les cleacutes primaires parmi celles neacutecessitant le plus petit nombre de bits possible pour leur codage

[ ]solution ndeg7 [ ] p57

Transformer le modegravele UML en modegravele relationnel (justifier les passages non triviaux en particulier la relation dheacuteritage)

[ ]solution ndeg8 [ ] p58

Exercice Objets Numeacuteriques Libres

33

-

-

-

-

-

-

-

-

-

-

-

-

Les librairies sont des logiciels mais pas des applications Elles ont les mecircmes attributs que les applications (nom version description courte URL) mais les URL ne sont pas neacutecessairement uniques Les applications peuvent deacutependre de librairies ou dautres applications et les librairies peuvent deacutependre dautres librairies (mais pas dune application)La base de donneacutees permet de geacuterer des composantsLes composants sont inteacutegreacutes agrave une application ou librairie Les composants ont un code interne agrave lapplication ou la librairie quil servent une version et une description courte et une URL Le code et le numeacutero de version permettent didentifier localement le composant au sein de la librairie ou de lapplication la description courte et lURL sont optionnellesLa base de donneacutees permet de geacuterer des licencesLes applications librairies et composants sont attacheacutes agrave une ou plusieurs licences identifieacutees par leur nom (GPL MPL) leur version et leur langue et comportant le texte inteacutegral de la licence Les versions des logiciels et licences sont de type numeacutero de licence majeur point numeacutero de licence mineur comme 10 ou 22La base de donneacutees permet de geacuterer des cateacutegoriesChaque logiciel est rangeacute dans une cateacutegorie principale et plusieurs cateacutegories secondaires Exemple de cateacutegories bureautique dessin multimeacutedia physique

Exemple (factice) de donneacutees

Applications

Scenari 41 une chaicircne eacuteditoriale XML httpscenariorg deacutepend de Libreoffice 43 et de ImageMagick 68Libreoffice 43 une suite bureautique WYSIWYG httplibreofficeorg

Librairie

ImageMagick 68 permet de creacuteer de convertir de modifier et dafficher des images http imagemagickorg

Composant

impng 02 est un composant de ImageMagick 68 permet de compresser une image au format PNG

Toutes ces applications librairies et composants sont disponibles sous une licence LGPL 30 et GPL 30 franccedilaisesToutes ces applications et librairies sont rangeacutees dans la cateacutegorie principale document Scenari est rangeacute dans la cateacutegorie secondaire Eacutedition WYSIWYM Libreoffice dans la cateacutegorie secondaire Bureautique ImageMagick dans la cateacutegorie secondaire Multimeacutedia

Question

Reacutealiser un MCD en UML[ ]solution ndeg9 [ ] p58

Devoirs

34

1 Exercice Arbre de scegravene 3D[30 minutes]

On souhaite pouvoir geacuterer les diffeacuterents eacuteleacutements composant des scegravenes 3D dans une base de donneacutees Une scegravene contient des objets qui eux-mecircmes peuvent appartenir agrave plusieurs scegravenes (au moins une) mais il ne peut y avoir plusieurs fois le mecircme objet dans une mecircme scegravene Dans chaque scegravene les objets peuvent ecirctre visibles ou invisibles Les scegravenes et les objets sont identifieacutes de maniegravere unique par un nom Une scegravene peut ecirctre active ou inactive Un objet a comme proprieacuteteacute une position dans lespace repreacutesenteacutee par un vecteur de reacuteels agrave trois composantes (x y z) Les objets sont organiseacutes de maniegravere hieacuterarchique un objet peut ecirctre parent de plusieurs objets et chaque objet peut avoir au plus un parent Des scripts peuvent ecirctre associeacutes agrave un objet ou agrave une scegravene (agrave lun ou agrave lautre mais pas aux deux) Un script est identifieacute de maniegravere unique par un nom et possegravede eacutegalement un attribut permettant de connaicirctre son eacutetat (actif ou inactif) Un personnage est un objet particulier qui possegravede des animations Une animation est relative agrave un personnage et est identifieacutee de maniegravere locale par un nom Agrave un objet est associeacute un maillage et celui-ci peut ecirctre utiliseacute par plusieurs objets Un maillage est identifieacute de maniegravere unique par un nom et est composeacute de plusieurs eacuteleacutements Chaque eacuteleacutement est relatif agrave un maillage et est identifieacute de maniegravere locale par un numeacutero Il existe exactement trois types deacuteleacutement des nœuds des arrecirctes et des faces Une face est deacutelimiteacutee par trois arrecirctes et chaque arrecircte est deacutelimiteacutee par deux nœuds Plusieurs arrecirctes peuvent partager un mecircme nœud et plusieurs faces peuvent partager une mecircme arrecircte Afin deacutevaluer la complexiteacute dune scegravene on souhaite pouvoir calculer le nombre de faces afficheacutees pour une scegravene donneacutee (cest-agrave-dire la somme du nombre de faces du maillage associeacute aux objets visibles de la scegravene) Un maillage possegravede plusieurs mateacuteriaux identifieacutes de maniegravere unique par un nom Un mateacuteriau peut ecirctre associeacute agrave plusieurs maillages Un mateacuteriau est caracteacuteriseacute par une couleur deacutefinie par un vecteur dentiers agrave quatre composantes rouge vert bleu alpha Un mateacuteriau peut posseacuteder une texture et celle-ci peut ecirctre utiliseacutee par plusieurs mateacuteriaux Une texture est identifieacutee de maniegravere unique par un nom et possegravede comme attribut une image

Question 1

Question 2

DevoirsIII

Proposez une clarification de ce problegraveme On pourra reclasser les informations par grande cateacutegorie scegravene objets scripts

Eacutetablissez un modegravele conceptuel en UML de ce problegraveme

Compleacutement Exercices de modeacutelisation suppleacutementaire

35

1 Exercice Appartements agrave louer[30 min]

Une agence dimmobilier (ventes et locations) veut geacuterer son parc dappartements dans une base de donneacutees Chaque appartement possegravede plusieurs piegraveces qui peuvent ecirctre des piegraveces dhabitation des piegraveces de rangement ou des commoditeacutes

Chaque piegravece a une superficie un nombre de prises eacutelectriques et des meubles Pour ces derniers on veut enregistrer le nom du modegravele et le type (chaise lit four etc) Rien nempecircche quune piegravece comporte plusieurs meubles identiques (par exemple plusieurs chaises PIN IQUEA) Les piegraveces dhabitation ont une ou plusieurs fenecirctres les piegraveces de rangement ont une ou plusieurs eacutetagegraveres et une surface de rangement utile totale On veut aussi savoir dans quelles piegraveces de rangement se situent les tableaux eacutelectriques de lappartement Finalement les piegraveces commoditeacutes peuvent ecirctre de trois types cuisine toilette ou salle de bain

Lagence veut aussi enregistrer les portes entre les diffeacuterentes piegraveces Une porte peut ecirctre agrave simple battant double battant coulissante ou une simple ouverture

Chaque appartement a une adresse une superficie totale (qui est la somme des superficies des piegraveces) et un type qui est la lettre T suivie du nombre de piegraveces dhabitation de lappartement Pour un appartement donneacute chaque piegravece est identifieacutee par un numeacutero (commenccedilant au numeacutero 1)

Lagence veut eacutegalement enregistrer le quartier ougrave se trouve lappartement auquel est lieacute un prix par megravetre carreacute Finalement elle veut garder un historique de lhistoire de lappartement les peacuteriodes pour lesquelles il est libre occupeacute en travaux ou vendu

Question

2 Exercice Objectifs[40 min]

Vous prenez la preacutesidence de lassociation Objectifs dont lobjet est daider ses eacutetudiants membres agrave mener des projets dans le cadre de leurs eacutetudes

Compleacutement Exercices de modeacutelisation suppleacutementaire

IV

Reacutealisez le diagramme UML reacutepondant aux besoins de cette agence[ ]solution ndeg10 [ ] p59

Exercice Objectifs

36

- - -

-

-

- - -

Vous constatez en arrivant dans lassociation que personne ne sait exactement quels sont les projets en cours ni qui fait quoi dans les projets Vous ne parvenez pas non plus agrave obtenir une liste exacte des partenaires sur lesquels lassociation peut compter La seule chose sur laquelle vous parvenez agrave mettre la main est un fichier tableur vaguement agrave jour

Vous deacutecidez quil est plus que temps de mettre en place une base de donneacutees afin dassurer la bonne gestion des informations les plus importantes pour lassociation Vous vous attachez pour cela agrave reacutealiser une analyse des besoins

Analysez les documents ci-apregraves

Etat des projets

Eacutetat des projets de lassociation Objectifs

Recueil de besoins

Agrave partir de leacutetude du fonctionnement actuel de lassociation vous relevez les choses importantes agrave geacuterer suivantes

Les membres de lassociation geacuteneacuteralement identifieacutes par leur preacutenomLes projets geacutereacutes par lassociation avec des dates de deacutebut et de fin preacutecises et un chef de projetLe deacutetail des tacircches de chaque projet avec leurs dates de deacutebut et de fin aussi et la liste de tous les membres qui y participentLa liste des partenaires des projets avec leur rocircle preacutecis pour chacun des projets auxquels ils participent

Afin de mieux geacuterer les attributions des projets il serait eacutegalement inteacuteressant de creacuteer une liste des speacutecialiteacutes correspondant agrave ce qui ce fait dans lassociation et daffecter une speacutecialiteacute agrave chaque membre ainsi quune agrave chaque projet pour voir si ce sont bien les membres les mieux adapteacutes qui travaille sur les projets

Recueil de donneacutees

Les discussions avec les anciens membres de lassociation vous apprennent les choses suivantes

Lassociation a termineacute de geacuterer les trois projets Comeacutedie Musicale geacutereacutee par Nathalie sur les trois premiers mois du semestre dautomne 1001 Science en fecircte geacutereacutee par Pierre sur tout le semestre de printemps 1003 et Nuit du picolo geacutereacutee par Julien en novembre 1001Les speacutecialiteacutes recenseacutees pour le moment sont Ville Universiteacute Sport Entreprise Culture InternationalIl faut au moins dix membres agrave lassociation (sinon elle ferme) recruter ceux qui manquentAidez lassociation agrave diviser ses projets en tacircches

Exercice Objectifs

37

- Les partenaires suivants aident ou ont aideacute lassociation la mairie pour la comeacutedie musicale et la science en fecircte qui apporte un soutien financier le ministegravere de la culture qui apporte son soutien logistique agrave la science en fecircte lassociation des commerccedilants de la ville qui apporte son soutien publicitaire agrave la comeacutedie musicale 1664 qui offre ses biegraveres agrave moitieacute prix pour la nuit du Picolo

Question 1

Question 2

Question 3

Afin de preacuteparer une analyse des besoins sommaire listez les donneacutees que vous devrez geacuterer agrave laide des documents et recueils de discussion agrave votre disposition Faites des hypothegraveses lorsque les donneacutees sont incomplegravetes ou incoheacuterentes

[ ]solution ndeg11 [ ] p59

Reacutealiser le MCD en UML et en E-A agrave partir des donneacutees preacutepareacutees dans la question preacuteceacutedente[ ]solution ndeg12 [ ] p60

Reacutealiser le MLD en relationnel en traduisant votre MCD[ ]solution ndeg13 [ ] p61

Contenus annexes

38Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

- - -

gt Attributs

Un attribut est une information eacuteleacutementaire qui caracteacuterise une classe et dont la valeur deacutepend de lobjet instancieacute

Le domaine des valeurs que peut prendre lattribut est fixeacute a prioriUn attribut est typeacute

Il peut prendre plusieurs valeurs distinctes dans son domaineUn attribut peut ecirctre multivalueacute Sa valeur alors est une fonction sur dautres attributs de la classeUn attribut peut ecirctre deacuteriveacute

(ou composite) Il joue alors le rocircle dun groupe dattributs (par Un attribut peut ecirctre composeacuteexemple une adresse peut ecirctre un attribut composeacute des attributs numeacutero type de voie nom de la voie) Cette notion renvoie agrave la notion de variable de type dans les langages de Record

programmation classiques

En UML on preacutefegravere lusage de meacutethodes aux attributs deacuteriveacutes On utilisera toujours des meacutethodes degraves que la valeur de lattribut deacuteriveacute deacutepend dautres attributs exteacuterieurs agrave sa classeEn UML on preacutefegravere lusage de compositions aux attributs composeacutes On utilisera toujours des compositions pour les attributs composeacutes et multivalueacutes

1 attributtype2 attribut_multivalueacute[nbMinValeursnbMaxValeurs]type3 attribut_deacuteriveacutetype4 attribut_composeacute5   - sous-attribut1type6   - sous-attribut2type7   -

Contenus annexes

Deacutefinition Attribut

Attention On utilise peu les attributs deacuteriveacutes et composeacutes en UML

Syntaxe

attributtype

attribut_multivalueacute[nbMinValeursnbMaxValeurs]type

attribut_deacuteriveacutetype

attribut_composeacute

  - sous-attribut1type

  - sous-attribut2type

  -

Contenus annexes

39Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Repreacutesentation dattributs en UML

Dans cet exemple les attributs Nom Preacutenom sont de type lun de 20 caractegraveres et lautre de 10 stringtandis que DateNaissance est de type et Age de type Preacutenom est un attribut multivalueacute ici date integerune personne peut avoir de 1 agrave 3 preacutenoms Age est un attribut deacuteriveacute il est calculeacute par une fonction sur DateNaissance

Meacutethodes (cf p39)

Composition (cf p5)

gt Meacutethodes

Une meacutethode (ou opeacuteration) est une fonction associeacutee agrave une classe dobjet qui permet dagir sur les objets de la classe ou qui permet agrave ces objets de renvoyer des valeurs (calculeacutees en fonction de paramegravetres)

1 methode(paramegravetres)type

Pour la modeacutelisation des bases de donneacutees les meacutethodes sont surtout utiliseacutees pour repreacutesenter des donneacutees calculeacutees (agrave linstar des attributs deacuteriveacutees) ou pour mettre en exergue des fonctions importantes du systegraveme cible Seules les meacutethodes les plus importantes sont repreacutesenteacutees lapproche est moins systeacutematique quen modeacutelisation objet par exemple

Lors de la transformation du modegravele conceptuel UML en modegravele logique relationnel les meacutethodes ne Leur repeacuterage au niveau conceptuel sert donc surtout daide-seront geacuteneacuteralement pas impleacutementeacutees

meacutemoire pour limpleacutementation au niveau applicatif

Exemple La classe Personne

Compleacutement Voir aussi

Deacutefinition Meacutethode

Syntaxe

Remarque Meacutethodes et modeacutelisation de BD

Remarque Meacutethodes relationnel relationnel-objet

methode(paramegravetres)type

Contenus annexes

40Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Au contraire un modegravele logique relationnel-objet permettra limpleacutementation de meacutethodes directement associeacutees agrave des tables Leur repeacuterage au niveau conceptuel est donc encore plus important

Transformation des meacutethodes par des vues (cf p40)

gt Transformation des meacutethodes par des vues

Lorsquune meacutethode est speacutecifieacutee sur un diagramme UML pour une classe C si cette meacutethode est une fonction relationnelle (elle renvoie une unique valeur et elle peut ecirctre reacutesolue par une requecircte SQL) alors on creacutee une vue qui reprend les attributs de la classe C et ajoute des colonnes calculeacutees pour les meacutethodes

Les attributs deacuteriveacutes eacutetant apparenteacutes agrave des meacutethodes ils peuvent eacutegalement ecirctre geacutereacutes par des vues

gt Classe dassociation

On utilise la notation des classes dassociation lorsque lon souhaite ajouter des proprieacuteteacutes agrave une association

Notation dune classe dassociation en UML

On reacuteserve en geacuteneacuteral les classes dassociation aux associations NM

Il est toujours possible de reacuteduire une classe dassociation sur une association 1N en migrant ses attributs sur la classe cocircteacute N et cest en geacuteneacuteral plus lisible ainsi

Compleacutement

Meacutethode

Remarque Attributs deacuteriveacutes

Deacutefinition Classe dassociation

Syntaxe Notation dune classe dassociation en UML

Meacutethode

Contenus annexes

41Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

-

Emplois

Selon le standard UML une classe dassociation est une classe et agrave ce titre elle peut ecirctre mobiliseacutee dans dautres associations ou dans des heacuteritages Nous deacuteconseillons neacuteanmoins ces notations qui ont tendance agrave complexifier la lecture et la transformation du diagramme

Nous conseillons donc de ne jamais associer une classe dassociation

gt Transformation des attributs

Pour chaque attribut eacuteleacutementaire et monovalueacute dune classe

on creacutee un attribut correspondant

Attribut

Classe1(ab)

Pour chaque attribut composite comprenant N sous-attributs dune classe

on creacutee N attributs correspondantsdont les noms sont la concateacutenation du nom de lattribut composite avec celui du sous-attribut

Exemple Exemple de classe dassociation

Conseil

Meacutethode Attributs simples

Meacutethode Attributs composites

Contenus annexes

42Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- - - -

Attribut composeacute

Classe1(ab_b1b_b2)

Pour chaque attribut multivalueacute b dune classe C

on creacutee une nouvelle relation RBqui comprend un attribut monovalueacute correspondant agrave bplus la cleacute de la relation repreacutesentant C la cleacute de RB est la concateacutenation des deux attributs

Attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Dans le cas ougrave le nombre maximum de est fini et petit on peut eacutegalement adopter la transformation b

suivante Classe1(ab1b2b3b4b5b6b7b8b9b10)

Si le nombre dattributs est infini ( ) cest impossible sil est trop grand ce nest pas souhaitableb[1]

On combine les regravegles eacutenonceacutees pour les attributs composeacutes et pour les attributs multivalueacutes

Attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Transformation des compositions (cf p42)

Meacutethode Attributs multivalueacutes

Meacutethode Attributs multivalueacutes (meacutethode alternative)

Meacutethode Attributs composeacutes multivalueacutes

Rappel Voir aussi

Contenus annexes

43Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

gt Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Compleacutement Attributs multivalueacutes et composeacutes

Contenus annexes

44Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

Rappel Voir aussi

Rappel

Meacutethode

Contenus annexes

45Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p48)

gt Transformation des associations 1N

Pour chaque association binaire de type 1N

on ajoute agrave la relation cocircteacute N une cleacute eacutetrangegravere vers la relation cocircteacute 1

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Meacutethode

Contenus annexes

46Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Association 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Contrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p46)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

R1

Compleacutement

Rappel

Meacutethode

Contenus annexes

47Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p47)

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Deacutefinition Projection

Contenus annexes

48Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Deacutefinition Projection

Contenus annexes

49Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Transformation des classes dassociation

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de lassociation NM

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Meacutethode Classe dassociation NM

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Associations ternaires

10

La transformation en relationnelle permettra de maintenir la modeacutelisation en ajoutant la cleacute locale agrave la cleacute initiale

1 Socieacuteteacute()2 Personne()3 Emploi(personne=gtPersonne societe=gtSociete postestring salaireinteger quotitenumeric(72))

18 Associations ternaires

Notation dune association ternaire

Il est toujours possible de reacuteeacutecrire une association ternaire avec trois associations binaires en transformant lassociation en classe

Syntaxe

Conseil Ne pas abuser des associations ternaires

Socieacuteteacute()

Personne()

Emploi(personne=gtPersonne societe=gtSociete postestring salaireinteger

quotitenumeric(72))

Passage UML-Relationnel Associations avanceacutees

11

En pratique on nutilise jamais en UML dassociation de degreacute supeacuterieur agrave 3

2 Passage UML-Relationnel Associations avanceacuteesObjectifs

Savoir faire le passage dun scheacutema conceptuel UML agrave un scheacutema relationnel dans tous les cas

Reconnaicirctre les cas de transformation qui se traitent toujours de la mecircme faccedilon et ceux qui neacutecessite une modeacutelisation compleacutementaire

21 Trousseau de cleacutes

En UML et en relationnel il existe plusieurs termes mobilisant le mot laquo cleacute raquo le seul concept qui est commun est le concept de Tous les autres sont speacutecifiques au niveau conceptuel ou relationnelcleacute

Cleacute (key)

Cleacute locale (local key)

Cleacute (key)

Cleacute candidate (candidate key)

Cleacute primaire (primary key) et Cleacute alternative (alternate key)

Cleacute artificielle (surrogate key) et Cleacute naturelle (natural key business key)

Cleacute eacutetrangegravere (foreign key)

Conseil Pas de degreacute supeacuterieur agrave 3

Attention

Rappel Concept commun au niveau UML et relationnel

Rappel Concept speacutecifique au niveau UML

Rappel Concepts speacutecifiques au niveau relationnel

Transformation des compositions

12

- -

Deacutefinition des cleacutes en relationnel

22 Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Transformation des agreacutegations

13

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

23 Transformation des agreacutegations

Les associations de type agreacutegation se traitent de la mecircme faccedilon que les associations classiques

Agreacutegation 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Compleacutement Attributs multivalueacutes et composeacutes

Rappel Voir aussi

Rappel Agreacutegation

Transformation des classes dassociation avec cleacute locale

14

- -

Agreacutegation NM

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2)

24 Transformation des classes dassociation avec cleacute locale

Les attributs de la classe dassociation

sont ajouteacutes agrave la relation issue de lassociation NM la cleacute locale de la classe dassociation est concateacuteneacutee aux cleacutes eacutetrangegraveres composant deacutejagrave la cleacute primaire de la relation dassociation

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Meacutethode Classe dassociation NM

Exercice

15

25 Correspondance entre UML et relationnel

Passsage UML vers Relationnel

Exercice

16

26 ExerciceQuel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

[ ]solution ndeg2 [ ] p53

Exercice

17

27 ExerciceSoit le scheacutema UML suivant

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

[ ]solution ndeg3 [ ] p54

Modeacutelisation avanceacutee des associations 11 en relationnel

18

-

- -

-

-

3 Modeacutelisation avanceacutee des associations 11 en relationnelObjectifs

Savoir faire le passage dun scheacutema conceptuel UML agrave un scheacutema relationnel

Connaicirctre les choix possibles pour le cas de lassociation 11 et savoir faire le meilleur choix

Il existe des formulations conceptuelles en UML qui sont plus deacutelicates agrave traduire au niveau logique en relationnel comme lassociation 11 Ces cas requiegraverent un choix eacuteclaireacute de la part du concepteur

31 Transformation des associations 11 (approche geacuteneacuterale)

Il existe deux solutions pour transformer une association 11

Avec deux relations on traite lassociation 11 comme une association 1N puis lon ajoute une contrainte UNIQUE sur la cleacute eacutetrangegravere pour limiter la cardinaliteacute maximale agrave 1 Avec une seule relation on fusionne les deux classes en une seule relation

Association 11

Une des deux relations est choisie pour porter la cleacute eacutetrangegravere on ajoute les contraintes ou (cleacute candidate) sur la cleacute eacutetrangegravere et si neacutecessaire une UNIQUE KEY

contrainte imposant linstanciation simultaneacutee des deux relations

Classe1(abc=gtClasse2) avec c UNIQUE ou KEY

Classe2(cd)

ou

Classe1(ab)

Classe2(cda=gtClasse1) avec a UNIQUE ou KEY

On creacuteeacute une seule relation contenant lensemble des attributs des deux classes

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Meacutethode Avec deux relations (cleacute eacutetrangegravere)

Meacutethode Avec une relation (fusion)

Transformation des associations 1111

19

- -

- - - - - -

- on choisit une cleacute parmi les cleacutes candidates

Classe12(abcd) avec c UNIQUE ou KEY

ou

Classe21(cdab) avec a UNIQUE ou KEY

Ce choix entre les deux meacutethodes sera conduit par une appreacuteciation du rapport entre

La complexiteacute introduite par le fait davoir deux relations lagrave ou une suffitLa pertinence de la seacuteparation des deux relations dun point de vue seacutemantiqueLes pertes de performance dues agrave leacuteclatement des relationsLes pertes de performance dues au fait davoir une grande relationLes questions de seacutecuriteacute et de sucircreteacute factoriseacutees ou non au niveau des deux relations

Dans le cas dune association 1111 il faudra ajouter une contrainte compleacutementaire

Transformation des associations 1111 (cf p19)

32 Transformation des associations 1111

Le plus souvent cest meacutethode par des relations qui est la plus adapteacutee agrave ce casfusionLorsquelle ne lest pas et que lon choisit deux relations il faut ajouter une contrainte dynamique qui controcirclera que les deux relations sont bien toujours instancieacutees ensembles Notons que la cleacute eacutetrangegravere peut ecirctre choisie comme cleacute primaire

Association 11

Classe12(abcd) avec c KEY

ou

Classe21(cdab) avec a KEY

ou

Classe1(abc=gtClasse2) avec c KEY

Classe2(cd)

Contrainte PROJECTION(Classe1c) = PROJECTION(Classe2c)

ou

Classe1(ab)

Remarque Fusion des relations dans le cas de la traduction de lassociation 11

Compleacutement

Meacutethode Association 1111

Transformation des associations 0111

20

-

-

-

-

Classe2(cda=gtClasse1) avec a KEY

Contrainte PROJECTION(Classe1a) = PROJECTION(Classe2a)

La contrainte dynamique exprimeacutee ici suit le mecircme principe que pour les association 1NContrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p44)

33 Transformation des associations 0111

Le plus souvent cest la meacutethode par les deux relations qui est la plus adapteacutee on choisira toujours la relation cocircteacute 01 pour ecirctre reacutefeacuterenccedilante

Il est possible dutiliser la fusion dans ce cas les cleacutes cocircteacute 01 deviennent des attributs il ne UNIQUE

peuvent plus ecirctre cleacutes pouvant ecirctre NULL

Association 011

Classe1(abc=gtClasse2) avec c KEY

Classe2(cd)

ou

Classe12(cdab) avec a UNIQUE

34 Transformation des associations 0101

On choisit la solution avec deux relations dun cocircteacute ou de lautre la cleacute eacutetrangegravere est associeacute agrave la contrainte ce nest pas une cleacute car elle peut ecirctre nulleUNIQUE

Il nest pas souhaitable de choisir la fusion lune des deux relations pouvant ecirctre nulle on ne pourrait plus trouver de cleacute naturelle

Association 0101

Classe1(abc=gtClasse2) avec c UNIQUE

Classe2(cd)

ou

Compleacutement Contrainte dynamique

Meacutethode Association 0111

Meacutethode Association 0101

Exemple de choix pour une relation 11

21

-

- -

-

-

Classe1(ab)

Classe2(cda=gtClasse1) avec a UNIQUE

35 Exemple de choix pour une relation 11

Soit deux entiteacutes homme et femme et une association mariage de cardinaliteacute 1111 entre ces deux entiteacutes (hommes et femmes sont donc obligatoirement marieacutes)Les entiteacutes homme et femme sont identifieacutees par un attribut nom (dans ce modegravele chaque personne a un nom unique on pourrait remplacer le nom par un identifiant comme le numeacutero de seacutecuriteacute social ou par une cleacute artificielle pour ecirctre plus proche de la reacutealiteacute)

Bien que de type 1111 le choix de la fusion nest pas tregraves opportun car il sagit bien dobjets distincts que lon veut modeacuteliser

On choisira donc plutocirct la repreacutesentation avec deux relationsLa cleacute eacutetrangegravere pourra ecirctre du cocircteacute homme ou femme mecircme si la pratique dominante nous incite agrave la mettre du cocircteacute femmeOn pourra eacutegalement deacutecider de prendre la cleacute eacutetrangegravere comme cleacute primaire

1 homme (nom)2 femme (mariage=gthomme nom) avec nom KEY3 Contrainte PROJ(hommenom) = PROJ(femmemariage)

Si lassociation avait eacuteteacute de cardinaliteacute 0101 (certains hommes et femmes ne sont pas marieacutes) un choix similaire se serait imposeacute avec limpossibiliteacute de choisir la cleacute eacutetrangegravere comme cleacute primaire celle-ci pouvant ecirctre nulle et neacutetant donc plus candidate

1 homme (nom)2 femme (nom mariage=gthomme) avec mariage UNIQUE

4 Autres eacuteleacutements utiles en UML packages et steacutereacuteotypesObjectifs

Maicirctriser le diagramme de classe UML dans le cas de la conception de BD

41 Paquetages

Les paquetages (plus communeacutement appeleacutes ) sont des eacuteleacutements servant agrave organiser un modegravelepackage

Ils sont particuliegraverement utiles degraves que le modegravele comporte de nombreuses classes et que celles-ci peuvent ecirctre trieacutees selon plusieurs aspects structurants

Exemple

Exemple

Deacutefinition Package

homme (nom)

femme (mariage=gthomme nom) avec nom KEY

Contrainte PROJ(hommenom) = PROJ(femmemariage)

homme (nom)

femme (nom mariage=gthomme) avec mariage UNIQUE

Steacutereacuteotype

22

Notation des paquetages en UML

Exemple dutilisation des packages

On repreacutesente chaque classe au sein dun Il est alors possible de faire une preacutesentation globale du packagemodegravele (tous les ) partielle (une partie des ) ou centreacutee sur un seul packages packages package

Pour une repreacutesentation partielle ou centreacutee sur un on repreacutesente les concerneacutes avec leurs package packagesclasses propres ainsi que toutes les classes lieacutees des autres packages (et seulement celles-ci)

Preacutesentation partielle du modegravele centreacutee sur un package

Syntaxe

Exemple

Meacutethode

Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt

23

42 Steacutereacuteotype

Un steacutereacuteotype UML est une syntaxe permettant dajouter de la seacutemantique agrave la modeacutelisation des classes Il permet de deacutefinir des afin de regrouper conceptuellement un ensemble de classes (agrave linstar types de classedune classe qui permet de regrouper conceptuellement un ensemble dobjets)

Cest une meacutecanique de meacuteta-modeacutelisation elle permet deacutetendre le meacuteta-modegravele UML cest agrave dire le modegravele conceptuel du modegravele conceptuel

Un meacuteta-modegravele est le modegravele dun modegravele Par exemple le meacuteta-modegravele UML comprend les concepts de classe attribut association cardinaliteacute composition agreacutegation contraintes annotations On mobilise ces concepts (on les instancie) pour exprimer un modegravele particulier suivant le formalisme UML

Les steacutereacuteotypes permettent donc dajouter au meacuteta-modegravele UML standard celui que tout le monde utilise des concepts locaux pour enrichir le langage de modeacutelisation que lon utilise pour reacutealiser des modegraveles

Notation dun steacutereacuteotype en UML

Un steacutereacuteotype speacutecifique enrichit le meacuteta-modegravele UML mais selon une seacutemantique qui est propre agrave celui qui la poseacute non standard donc La conseacutequence est que pour un tiers linterpreacutetation du steacutereacuteotype nest plus normaliseacutee et sera potentiellement plus facilement erroneacutee Il convient donc de ne pas abuser de cette meacutecanique

Deux ou trois steacutereacuteotypes speacutecifiques correctement deacutefinis sont faciles agrave transmettre plusieurs dizaines repreacutesenteraient un nouveau langage complet agrave apprendre pour le lecteur du modegravele

Il existe des steacutereacuteotypes fournit en standard par UML ou communeacutement utiliseacutes par les modeacutelisateurs Lavantage est quil seront compris plus largement au mecircme titre que le reste du meacuteta-modegravele (ils ont une valeur de standard)

43 Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt

Deacutefinition Steacutereacuteotype UML

Deacutefinition Meacuteta-modegravele

Syntaxe

Conseil Steacutereacuteotypes speacutecifiques et steacutereacuteotypes standard

Syntaxe

Type utilisateurs steacutereacuteotype ltltdataTypegtgt

24

Steacutereacuteotype UML permettant dexprimer une eacutenumeacuteration

Exemple de modeacutelisation UML deacutenumeacuteration

44 Type utilisateurs steacutereacuteotype ltltdataTypegtgt

Les types utilisateurs permettent de deacutefinir des types complexes propres en extension des types primaires (entier chaicircne date)

Steacutereacuteotype dataType

Steacutereacuteotype dataType (exemple)

Cette modeacutelisation est eacutequivalente agrave la modeacutelisation des attributs composeacutes directement dans la classe principale Cest une repreacutesentation plus standard en UML

Exemple

Syntaxe

Exemple

Meacutethode Attributs composeacutes

Synthegravese sur la modalisation UML et relationnelle

25

Quelques eacuteleacutements de stylistique UML

26

-

- -

-

-

-

- - -

- - - -

1

2

3

5 Synthegravese sur la modalisation UML et relationnelle51 Quelques eacuteleacutements de stylistique UML

Toutes les associations doivent ecirctre nommeacutees (sauf composition heacuteritage agreacutegation)Ne pas utiliser de nom geacuteneacuterique pour les Classes comme Entiteacute Classe Objet TrucEacuteviter les noms geacuteneacuteriques pour les associations (comme est associeacute agrave)Attention au sens des compositions et agreacutegation le losange est cocircteacute ensemble et noubliez pas les cardinaliteacutes notamment cocircteacute parties

Nutilisez pas le souligneacute ni les en UML pour identifier les cleacutes preacutefeacuterez la contrainte keyPreacutefeacuterez lheacuteritage aux booleacuteens de typage en UMLLes attributs deacuteriveacutes sont reacuteserveacutes aux deacuterivations simples (des attributs de la mecircme classe) si cest plus complexe preacutefeacuterez des meacutethodes (et dans le doute preacutecisez les modes de calcul sur le scheacutema ou dans une note agrave part)Donnez des exemples de contenu lorsque ce nest pas eacutevident (lorsque le couple nom dattribut et type ne permet pas de faccedilon eacutevidente de comprendre de quoi lon parle)Inutile de deacuteclarer le type booleacuteen en UML utilisez-le directement comme un type de donneacutees connu

Si tous vos heacuteritages sont exclusifs notez-le agrave part pour alleacuteger votre scheacutema (et eacuteviter labondance de XOR)

52 Attention aux cleacutes artificielles

en UML on ne pose jamais de cleacutes artificiellesen relationnel on pose rarement des cleacute artificielles sauf dans le cas de cleacutes eacutetrangegraveres vraiment trop compliqueacuteesen SQL on peut poser des cleacutes artificielles si on a une bonne raison (ce nest donc pas systeacutematique et cest agrave justifier)

On najoutera pas de cleacute artificielle en UML au moment de la modeacutelisation conceptuelle des donneacutees

Formellement en UML la notion de cleacute nexiste pas (contrairement agrave l ) elle est ajouteacutee par les E-A

pratiquants des BD

Logiquement on a pas besoin de cette notion en UML les cleacutes artificielles servent en relationnel et dans certains cas uniquementPratiquement cela peut conduire agrave des situations absurdes (comme enlever au niveau logique des cleacutes artificielles ajouteacutees au niveau conceptuel)

Attention

Conseil

Compleacutement

Fondamental

Cleacutes artificielles et niveau conceptuel

Bibliographie commenteacutee sur la modeacutelisation UML

27

-

-

- -

-

- -

-

-

3

4

5

si on fait du non-relationnel on ne doit pas ajouter de cleacutes artificielles dans certains cas (limbrication typiquement) cela arrive mecircme en relationnel avec la transformation de lheacuteritage (dans certains cas toujours)

Meacutethodologiquement il faut se concentrer agrave chaque phase sur ce qui est important donc au moment du MCD on traduit les besoins on repegravere les contraintes explicites (cleacute uniciteacute non nulliteacute) sans se preacuteoccuper de ce qui sera rendu neacutecessaire par la suite par la modeacutelisation relationnelle (les cleacutes eacutetrangegraveres par exemple) ou limpleacutementation (loptimisation par exemple) Agrave chaque jour suffit sa peine Peacutedagogiquement enfin les deacutebutants ont tendance (agrave cause des environnements de conception graphique comme phpMyAdmin notamment) agrave systeacutematiser les cleacutes artificielles en SQL (on pourrait en discuter) mais eacutegalement agrave ne pas faire le travail de recherche des cleacutes naturelles (au niveau relationnel notamment ce qui est une faute de modeacutelisation) Donc au plus tard on fait intervenir les cleacutes artificielles au plus on a une chance de penser aux cleacutes naturelles

Soit le modegravele relationnel suivant

1 Etu (id numEtu) avec numEtu cleacute 2 UV (id codeUv) avec codeUv cleacute3 Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

La question qui permet dafficher la liste des eacutetudiants (numEtu) avec leurs UVs (codeUv) neacutecessite une jointure des cleacutes artificielles Un modegravele sans ces cleacutes artificielles aurait eacuteteacute plus performant pour agrave causereacutepondre agrave cette question puisque toutes les informations se trouvent dans la relation Inscriptions

1 Etu (numEtu) 2 UV (codeUv) 3 Inscriptions (uv=gtUV etu=gtEtu)

Ne soyez pas systeacutematiqueIl est en effet freacutequent dans un projet reacuteel dadopter des cleacutes artificielles presque systeacutematiquement vous pourrez le faire en connaissance de cause quand vous aurez bien compris pourquoi cest inteacuteressant et quand ccedila ne lest pasLes cleacutes artificielles sont inteacuteressantes pour autre chose que les performances (leacutevolutiviteacute par exemple choisissez-les quand vous savez pourquoi)Les cleacutes artificielles ne dispensent pas de rechercher les cleacutes naturelles Les cleacutes artificielles ne sont pas la seule faccedilon doptimiser une base de donneacutees (indexation deacutenormalisation)

53 Bibliographie commenteacutee sur la modeacutelisation UML

Il existe de nombreux outils de modeacutelisation UML On pourra citer

logiciel Open Source et multi-plateformes facile dusage (qui marche neacuteanmoins mieux sur Linux Dia

que sur Windows)

(version gratuite)Objecteering

Cleacutes artificielles et optimisation est-il toujours plus performant dutiliser des cleacutes artificielles

Conseil

Compleacutement Outils de modeacutelisation UML

Etu (id numEtu) avec numEtu cleacute

UV (id codeUv) avec codeUv cleacute

Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

Etu (numEtu)

UV (codeUv)

Inscriptions (uv=gtUV etu=gtEtu)

Bibliographie commenteacutee sur la modeacutelisation UML

28

- - - - - -

- - - - - -

Agrave voir eacutegalement en Open Source ou (non testeacute par lauteur)ArgoUML EclipseUML

UML2 en action

Pour un aperccedilu plus deacutetailleacute des possibiliteacutes dexpression du diagramme de classe UML lire le chapitre 7 Deacuteveloppement du modegravele statique (pages 133 agrave 163)

On pourra notamment y trouver

Lassociation dagreacutegationLes proprieacuteteacutes dassociationLexpression de rocircles dans les associationsLes attributs de classeLes qualificatifsLes opeacuterations (ou meacutethodes)

Le chapitre donne de plus des conseils meacutethodologiques pour la conception (voir en particulier la synthegravese page 163)

On pourra eacutegalement y trouver

Des principes de choix de modeacutelisation entre attributs et classes et sur la segmentation des classesDes principes de seacutelection des attributs (redondance avec les associations avec les classes etc)Des principes de seacutelection des associationsDes principes de choix de cardinaliteacute (notamment pour la gestion dhistorisation)Des principes de seacutelection des relations de geacuteneacuteralisation (heacuteritage)Des principes dintroduction de meacutetaclasses (type)s

U M L e n Franccedilais

Une tregraves bonne reacutefeacuterence en ligne sur la modeacutelisation UML avec des cours des liens vers la norme etc

Le contenu deacutepasse tregraves largement lusage dUML pour la modeacutelisation de BD (et ne fait dailleurs pas de reacutefeacuterence preacutecise agrave ce sous-ensemble particulier)

On pourra consulter en particulier le chapitre sur les diagrammes de classe httpumlfreefrcoursi-p14html

UML en 5 eacutetapes

On consultera en particulier le tutoriel sur les diagrammes de classe httpdeveloppeurjournaldunetcomtutorielcpt010607cpt_umlintroshtml

Cinq petits conseils pour un scheacutema UML efficace

Compleacutement Modeacutelisation UML

Compleacutement Reacutefeacuterence UML en ligne

Compleacutement Tutoriel sur la modeacutelisation UML

Compleacutement Conseils

Synthegravese Les diagrammes de modeacutelisation conceptuelle

29

-

-

- -

-

- -

-

-

- -

-

- - - -

-

-

(chapitre 3)UML2 par la pratique

Des explications exemples et eacutetudes de cas

54 Synthegravese Les diagrammes de modeacutelisation conceptuelle

Un modegravele conceptuel peut ecirctre repreacutesenteacute sous forme de diagramme E-A ou sous forme de diagramme de classe UML

Classe ou Entiteacute

Attribut ou Proprieacuteteacute

TypeacuteMulti-valueacuteComposeacuteDeacuteriveacute

Meacutethode

ParamegravetresValeur de retour

Association

Association

VerbeCardinaliteacute

Heacuteritage

Heacuteritage dattributsHeacuteritage de meacutethodes

Composition (ou entiteacute faible)

Cardinaliteacute

Compleacutement Pratique

Exercices

30

-

-

-

-

-

-

-

1 2

1

1 Exercice Lab III[20 min]

Description du problegraveme

Un laboratoire souhaite geacuterer les meacutedicaments quil conccediloit

Un meacutedicament est deacutecrit par un nom qui permet de lidentifier En effet il nexiste pas deux meacutedicaments avec le mecircme nom Un meacutedicament comporte une description courte en franccedilais ainsi quune description longue en latin On gegravere aussi le conditionnement du meacutedicament cest agrave dire le nombre de pilules par boicircte (qui est un nombre entier)Agrave chaque meacutedicament on associe une liste deacutedieacutee de contre-indications geacuteneacuteralement plusieurs parfois aucune Les contre-indications sont trieacutees par ordre dimportance Lordre est total est strict pour un meacutedicament donc chaque contre-indication possegravede une importance et il nexiste pas deux contre-indications associeacutees au mecircme meacutedicament avec la mecircme importanceTout meacutedicament possegravede au moins un composant souvent plusieurs Un composant est identifieacute par un code unique et possegravede un intituleacute Tout composant peut intervenir dans la fabrication de plusieurs meacutedicaments Il existe des composants qui ne sont pas utiliseacutes pour fabriquer des meacutedicaments et que lon veut quand mecircme geacuterer

Donneacutees de test

Afin de mateacuterialiser notre base de donneacutees nous obtenons les descriptions suivantes

Le a pour description courte et pour description longue Chourix Meacutedicament contre la chute des chouxlaquo raquoVivamus fermentum semper porta Nunc diam velit adipiscing ut tristique vitae sagittis vel odio laquo

Il est conditionneacute en boicircte de 13Maecenas convallis ullamcorper ultricies Curabitur ornare raquoSes contre-indications sont

Le Chourix ne doit jamais ecirctre pris apregraves minuitLe Chourix ne doit jamais ecirctre mis au contact avec de leau

Ses composants sont le et le HG79 SN50Le a pour description courte et pour Tropas Meacutedicament contre les dysfonctionnements intellectuelslaquo raquodescription longue Suspendisse lectus leo consectetur in tempor sit amet placerat quis neque Etiam laquo

Il est conditionneacute en boicircte de 42luctus porttitor lorem sed suscipit est rutrum non raquoSes contre-indications sont

Le Tropas doit ecirctre gardeacute agrave labri de la lumiegravere du soleil

Son unique composant est le HG79Les composants existants sont

HG79 Vif-argent alleacutegeacute

ExercicesII

Exercice Eacutetudiants et UVs (introduction)

31

- - -

- - HG81 Vif-argent alourdi

SN50 Pur eacutetain

Question 1

Question 2

Question 3

2 Exercice Eacutetudiants et UVs (introduction)[20 min]

On dispose du scheacutema UML ci-apregraves qui deacutecrit des eacutetudiants des UV les notes obtenues par les eacutetudiants agrave ces UV et les diplocircmes dorigine de ces eacutetudiants

Eacutetudiants et UVs

key deacutesigne des cleacutes candidates ici toutes les cleacutes ne sont composeacutees que dun seul attributlocal key deacutesigne une cleacute localeun semestre est de la forme PYYYY ou AYYYY (ougrave YYYY deacutesigneacute une anneacutee sur 4 chiffre) exemple A2013 P2014

Rappel Notion de cleacute locale dans classes dassociation (cf p49)

Effectuez le modegravele conceptuel en UML de ce problegraveme

Indices

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans deacutedieacuteeles donneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition

[ ]solution ndeg4 [ ] p56

En mobilisant les regravegles adeacutequates proposer un modegravele logique de donneacutees correspondant en relationnel Le repeacuterage des domaines et des cleacutes est obligatoire

[ ]solution ndeg5 [ ] p57

Dessiner des tableaux remplis avec les donneacutees fournies en exemple afin de montrer que le modegravele fonctionne selon le besoin exprimeacute initialement On pourra mettre le premier mot seulement des descriptions pour gagner du temps

[ ]solution ndeg6 [ ] p57

Exercice Super-heacuteros relationnels I

32

-

-

Question

3 Exercice Super-heacuteros relationnels I[20 min]

La gamme de super-heacuteros GARVEL veut reacutealiser la base de donneacutees de leurs figurines articuleacutees La socieacuteteacute a fait reacutealiser un modegravele UML qui doit servir de point de deacutepart agrave la mise en œuvre

Modegravele UML Figurines GARVEL

Question

4 Exercice Objets Numeacuteriques Libres[30 min]

Lassociation ONL (Objets Numeacuteriques Libres) est une association de promotion des logiciels libres Elle souhaite exposer sur un site Internet une liste de logiciels libres Ce site sera adosseacute agrave une base de donneacutees relationnelle ou relationnel-objet La premiegravere eacutetape de sa deacutemarche est de reacutealiser un modegravele conceptuel repreacutesentant ce quelle souhaite faire

La base de donneacutees permet de geacuterer des applicationsLes applications sont identifieacutees par leur nom (LibreOffice Gimp) et leur version (10 21) et comportent une description courte et une URL Tous les attributs sont obligatoires Chaque application a une URL uniqueLa base de donneacutees permet de geacuterer des librairies

Traduire le scheacutema en modegravele logique relationnel ( )MLD1

On choisira obligatoirement les cleacutes primaires parmi celles neacutecessitant le plus petit nombre de bits possible pour leur codage

[ ]solution ndeg7 [ ] p57

Transformer le modegravele UML en modegravele relationnel (justifier les passages non triviaux en particulier la relation dheacuteritage)

[ ]solution ndeg8 [ ] p58

Exercice Objets Numeacuteriques Libres

33

-

-

-

-

-

-

-

-

-

-

-

-

Les librairies sont des logiciels mais pas des applications Elles ont les mecircmes attributs que les applications (nom version description courte URL) mais les URL ne sont pas neacutecessairement uniques Les applications peuvent deacutependre de librairies ou dautres applications et les librairies peuvent deacutependre dautres librairies (mais pas dune application)La base de donneacutees permet de geacuterer des composantsLes composants sont inteacutegreacutes agrave une application ou librairie Les composants ont un code interne agrave lapplication ou la librairie quil servent une version et une description courte et une URL Le code et le numeacutero de version permettent didentifier localement le composant au sein de la librairie ou de lapplication la description courte et lURL sont optionnellesLa base de donneacutees permet de geacuterer des licencesLes applications librairies et composants sont attacheacutes agrave une ou plusieurs licences identifieacutees par leur nom (GPL MPL) leur version et leur langue et comportant le texte inteacutegral de la licence Les versions des logiciels et licences sont de type numeacutero de licence majeur point numeacutero de licence mineur comme 10 ou 22La base de donneacutees permet de geacuterer des cateacutegoriesChaque logiciel est rangeacute dans une cateacutegorie principale et plusieurs cateacutegories secondaires Exemple de cateacutegories bureautique dessin multimeacutedia physique

Exemple (factice) de donneacutees

Applications

Scenari 41 une chaicircne eacuteditoriale XML httpscenariorg deacutepend de Libreoffice 43 et de ImageMagick 68Libreoffice 43 une suite bureautique WYSIWYG httplibreofficeorg

Librairie

ImageMagick 68 permet de creacuteer de convertir de modifier et dafficher des images http imagemagickorg

Composant

impng 02 est un composant de ImageMagick 68 permet de compresser une image au format PNG

Toutes ces applications librairies et composants sont disponibles sous une licence LGPL 30 et GPL 30 franccedilaisesToutes ces applications et librairies sont rangeacutees dans la cateacutegorie principale document Scenari est rangeacute dans la cateacutegorie secondaire Eacutedition WYSIWYM Libreoffice dans la cateacutegorie secondaire Bureautique ImageMagick dans la cateacutegorie secondaire Multimeacutedia

Question

Reacutealiser un MCD en UML[ ]solution ndeg9 [ ] p58

Devoirs

34

1 Exercice Arbre de scegravene 3D[30 minutes]

On souhaite pouvoir geacuterer les diffeacuterents eacuteleacutements composant des scegravenes 3D dans une base de donneacutees Une scegravene contient des objets qui eux-mecircmes peuvent appartenir agrave plusieurs scegravenes (au moins une) mais il ne peut y avoir plusieurs fois le mecircme objet dans une mecircme scegravene Dans chaque scegravene les objets peuvent ecirctre visibles ou invisibles Les scegravenes et les objets sont identifieacutes de maniegravere unique par un nom Une scegravene peut ecirctre active ou inactive Un objet a comme proprieacuteteacute une position dans lespace repreacutesenteacutee par un vecteur de reacuteels agrave trois composantes (x y z) Les objets sont organiseacutes de maniegravere hieacuterarchique un objet peut ecirctre parent de plusieurs objets et chaque objet peut avoir au plus un parent Des scripts peuvent ecirctre associeacutes agrave un objet ou agrave une scegravene (agrave lun ou agrave lautre mais pas aux deux) Un script est identifieacute de maniegravere unique par un nom et possegravede eacutegalement un attribut permettant de connaicirctre son eacutetat (actif ou inactif) Un personnage est un objet particulier qui possegravede des animations Une animation est relative agrave un personnage et est identifieacutee de maniegravere locale par un nom Agrave un objet est associeacute un maillage et celui-ci peut ecirctre utiliseacute par plusieurs objets Un maillage est identifieacute de maniegravere unique par un nom et est composeacute de plusieurs eacuteleacutements Chaque eacuteleacutement est relatif agrave un maillage et est identifieacute de maniegravere locale par un numeacutero Il existe exactement trois types deacuteleacutement des nœuds des arrecirctes et des faces Une face est deacutelimiteacutee par trois arrecirctes et chaque arrecircte est deacutelimiteacutee par deux nœuds Plusieurs arrecirctes peuvent partager un mecircme nœud et plusieurs faces peuvent partager une mecircme arrecircte Afin deacutevaluer la complexiteacute dune scegravene on souhaite pouvoir calculer le nombre de faces afficheacutees pour une scegravene donneacutee (cest-agrave-dire la somme du nombre de faces du maillage associeacute aux objets visibles de la scegravene) Un maillage possegravede plusieurs mateacuteriaux identifieacutes de maniegravere unique par un nom Un mateacuteriau peut ecirctre associeacute agrave plusieurs maillages Un mateacuteriau est caracteacuteriseacute par une couleur deacutefinie par un vecteur dentiers agrave quatre composantes rouge vert bleu alpha Un mateacuteriau peut posseacuteder une texture et celle-ci peut ecirctre utiliseacutee par plusieurs mateacuteriaux Une texture est identifieacutee de maniegravere unique par un nom et possegravede comme attribut une image

Question 1

Question 2

DevoirsIII

Proposez une clarification de ce problegraveme On pourra reclasser les informations par grande cateacutegorie scegravene objets scripts

Eacutetablissez un modegravele conceptuel en UML de ce problegraveme

Compleacutement Exercices de modeacutelisation suppleacutementaire

35

1 Exercice Appartements agrave louer[30 min]

Une agence dimmobilier (ventes et locations) veut geacuterer son parc dappartements dans une base de donneacutees Chaque appartement possegravede plusieurs piegraveces qui peuvent ecirctre des piegraveces dhabitation des piegraveces de rangement ou des commoditeacutes

Chaque piegravece a une superficie un nombre de prises eacutelectriques et des meubles Pour ces derniers on veut enregistrer le nom du modegravele et le type (chaise lit four etc) Rien nempecircche quune piegravece comporte plusieurs meubles identiques (par exemple plusieurs chaises PIN IQUEA) Les piegraveces dhabitation ont une ou plusieurs fenecirctres les piegraveces de rangement ont une ou plusieurs eacutetagegraveres et une surface de rangement utile totale On veut aussi savoir dans quelles piegraveces de rangement se situent les tableaux eacutelectriques de lappartement Finalement les piegraveces commoditeacutes peuvent ecirctre de trois types cuisine toilette ou salle de bain

Lagence veut aussi enregistrer les portes entre les diffeacuterentes piegraveces Une porte peut ecirctre agrave simple battant double battant coulissante ou une simple ouverture

Chaque appartement a une adresse une superficie totale (qui est la somme des superficies des piegraveces) et un type qui est la lettre T suivie du nombre de piegraveces dhabitation de lappartement Pour un appartement donneacute chaque piegravece est identifieacutee par un numeacutero (commenccedilant au numeacutero 1)

Lagence veut eacutegalement enregistrer le quartier ougrave se trouve lappartement auquel est lieacute un prix par megravetre carreacute Finalement elle veut garder un historique de lhistoire de lappartement les peacuteriodes pour lesquelles il est libre occupeacute en travaux ou vendu

Question

2 Exercice Objectifs[40 min]

Vous prenez la preacutesidence de lassociation Objectifs dont lobjet est daider ses eacutetudiants membres agrave mener des projets dans le cadre de leurs eacutetudes

Compleacutement Exercices de modeacutelisation suppleacutementaire

IV

Reacutealisez le diagramme UML reacutepondant aux besoins de cette agence[ ]solution ndeg10 [ ] p59

Exercice Objectifs

36

- - -

-

-

- - -

Vous constatez en arrivant dans lassociation que personne ne sait exactement quels sont les projets en cours ni qui fait quoi dans les projets Vous ne parvenez pas non plus agrave obtenir une liste exacte des partenaires sur lesquels lassociation peut compter La seule chose sur laquelle vous parvenez agrave mettre la main est un fichier tableur vaguement agrave jour

Vous deacutecidez quil est plus que temps de mettre en place une base de donneacutees afin dassurer la bonne gestion des informations les plus importantes pour lassociation Vous vous attachez pour cela agrave reacutealiser une analyse des besoins

Analysez les documents ci-apregraves

Etat des projets

Eacutetat des projets de lassociation Objectifs

Recueil de besoins

Agrave partir de leacutetude du fonctionnement actuel de lassociation vous relevez les choses importantes agrave geacuterer suivantes

Les membres de lassociation geacuteneacuteralement identifieacutes par leur preacutenomLes projets geacutereacutes par lassociation avec des dates de deacutebut et de fin preacutecises et un chef de projetLe deacutetail des tacircches de chaque projet avec leurs dates de deacutebut et de fin aussi et la liste de tous les membres qui y participentLa liste des partenaires des projets avec leur rocircle preacutecis pour chacun des projets auxquels ils participent

Afin de mieux geacuterer les attributions des projets il serait eacutegalement inteacuteressant de creacuteer une liste des speacutecialiteacutes correspondant agrave ce qui ce fait dans lassociation et daffecter une speacutecialiteacute agrave chaque membre ainsi quune agrave chaque projet pour voir si ce sont bien les membres les mieux adapteacutes qui travaille sur les projets

Recueil de donneacutees

Les discussions avec les anciens membres de lassociation vous apprennent les choses suivantes

Lassociation a termineacute de geacuterer les trois projets Comeacutedie Musicale geacutereacutee par Nathalie sur les trois premiers mois du semestre dautomne 1001 Science en fecircte geacutereacutee par Pierre sur tout le semestre de printemps 1003 et Nuit du picolo geacutereacutee par Julien en novembre 1001Les speacutecialiteacutes recenseacutees pour le moment sont Ville Universiteacute Sport Entreprise Culture InternationalIl faut au moins dix membres agrave lassociation (sinon elle ferme) recruter ceux qui manquentAidez lassociation agrave diviser ses projets en tacircches

Exercice Objectifs

37

- Les partenaires suivants aident ou ont aideacute lassociation la mairie pour la comeacutedie musicale et la science en fecircte qui apporte un soutien financier le ministegravere de la culture qui apporte son soutien logistique agrave la science en fecircte lassociation des commerccedilants de la ville qui apporte son soutien publicitaire agrave la comeacutedie musicale 1664 qui offre ses biegraveres agrave moitieacute prix pour la nuit du Picolo

Question 1

Question 2

Question 3

Afin de preacuteparer une analyse des besoins sommaire listez les donneacutees que vous devrez geacuterer agrave laide des documents et recueils de discussion agrave votre disposition Faites des hypothegraveses lorsque les donneacutees sont incomplegravetes ou incoheacuterentes

[ ]solution ndeg11 [ ] p59

Reacutealiser le MCD en UML et en E-A agrave partir des donneacutees preacutepareacutees dans la question preacuteceacutedente[ ]solution ndeg12 [ ] p60

Reacutealiser le MLD en relationnel en traduisant votre MCD[ ]solution ndeg13 [ ] p61

Contenus annexes

38Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

- - -

gt Attributs

Un attribut est une information eacuteleacutementaire qui caracteacuterise une classe et dont la valeur deacutepend de lobjet instancieacute

Le domaine des valeurs que peut prendre lattribut est fixeacute a prioriUn attribut est typeacute

Il peut prendre plusieurs valeurs distinctes dans son domaineUn attribut peut ecirctre multivalueacute Sa valeur alors est une fonction sur dautres attributs de la classeUn attribut peut ecirctre deacuteriveacute

(ou composite) Il joue alors le rocircle dun groupe dattributs (par Un attribut peut ecirctre composeacuteexemple une adresse peut ecirctre un attribut composeacute des attributs numeacutero type de voie nom de la voie) Cette notion renvoie agrave la notion de variable de type dans les langages de Record

programmation classiques

En UML on preacutefegravere lusage de meacutethodes aux attributs deacuteriveacutes On utilisera toujours des meacutethodes degraves que la valeur de lattribut deacuteriveacute deacutepend dautres attributs exteacuterieurs agrave sa classeEn UML on preacutefegravere lusage de compositions aux attributs composeacutes On utilisera toujours des compositions pour les attributs composeacutes et multivalueacutes

1 attributtype2 attribut_multivalueacute[nbMinValeursnbMaxValeurs]type3 attribut_deacuteriveacutetype4 attribut_composeacute5   - sous-attribut1type6   - sous-attribut2type7   -

Contenus annexes

Deacutefinition Attribut

Attention On utilise peu les attributs deacuteriveacutes et composeacutes en UML

Syntaxe

attributtype

attribut_multivalueacute[nbMinValeursnbMaxValeurs]type

attribut_deacuteriveacutetype

attribut_composeacute

  - sous-attribut1type

  - sous-attribut2type

  -

Contenus annexes

39Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Repreacutesentation dattributs en UML

Dans cet exemple les attributs Nom Preacutenom sont de type lun de 20 caractegraveres et lautre de 10 stringtandis que DateNaissance est de type et Age de type Preacutenom est un attribut multivalueacute ici date integerune personne peut avoir de 1 agrave 3 preacutenoms Age est un attribut deacuteriveacute il est calculeacute par une fonction sur DateNaissance

Meacutethodes (cf p39)

Composition (cf p5)

gt Meacutethodes

Une meacutethode (ou opeacuteration) est une fonction associeacutee agrave une classe dobjet qui permet dagir sur les objets de la classe ou qui permet agrave ces objets de renvoyer des valeurs (calculeacutees en fonction de paramegravetres)

1 methode(paramegravetres)type

Pour la modeacutelisation des bases de donneacutees les meacutethodes sont surtout utiliseacutees pour repreacutesenter des donneacutees calculeacutees (agrave linstar des attributs deacuteriveacutees) ou pour mettre en exergue des fonctions importantes du systegraveme cible Seules les meacutethodes les plus importantes sont repreacutesenteacutees lapproche est moins systeacutematique quen modeacutelisation objet par exemple

Lors de la transformation du modegravele conceptuel UML en modegravele logique relationnel les meacutethodes ne Leur repeacuterage au niveau conceptuel sert donc surtout daide-seront geacuteneacuteralement pas impleacutementeacutees

meacutemoire pour limpleacutementation au niveau applicatif

Exemple La classe Personne

Compleacutement Voir aussi

Deacutefinition Meacutethode

Syntaxe

Remarque Meacutethodes et modeacutelisation de BD

Remarque Meacutethodes relationnel relationnel-objet

methode(paramegravetres)type

Contenus annexes

40Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Au contraire un modegravele logique relationnel-objet permettra limpleacutementation de meacutethodes directement associeacutees agrave des tables Leur repeacuterage au niveau conceptuel est donc encore plus important

Transformation des meacutethodes par des vues (cf p40)

gt Transformation des meacutethodes par des vues

Lorsquune meacutethode est speacutecifieacutee sur un diagramme UML pour une classe C si cette meacutethode est une fonction relationnelle (elle renvoie une unique valeur et elle peut ecirctre reacutesolue par une requecircte SQL) alors on creacutee une vue qui reprend les attributs de la classe C et ajoute des colonnes calculeacutees pour les meacutethodes

Les attributs deacuteriveacutes eacutetant apparenteacutes agrave des meacutethodes ils peuvent eacutegalement ecirctre geacutereacutes par des vues

gt Classe dassociation

On utilise la notation des classes dassociation lorsque lon souhaite ajouter des proprieacuteteacutes agrave une association

Notation dune classe dassociation en UML

On reacuteserve en geacuteneacuteral les classes dassociation aux associations NM

Il est toujours possible de reacuteduire une classe dassociation sur une association 1N en migrant ses attributs sur la classe cocircteacute N et cest en geacuteneacuteral plus lisible ainsi

Compleacutement

Meacutethode

Remarque Attributs deacuteriveacutes

Deacutefinition Classe dassociation

Syntaxe Notation dune classe dassociation en UML

Meacutethode

Contenus annexes

41Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

-

Emplois

Selon le standard UML une classe dassociation est une classe et agrave ce titre elle peut ecirctre mobiliseacutee dans dautres associations ou dans des heacuteritages Nous deacuteconseillons neacuteanmoins ces notations qui ont tendance agrave complexifier la lecture et la transformation du diagramme

Nous conseillons donc de ne jamais associer une classe dassociation

gt Transformation des attributs

Pour chaque attribut eacuteleacutementaire et monovalueacute dune classe

on creacutee un attribut correspondant

Attribut

Classe1(ab)

Pour chaque attribut composite comprenant N sous-attributs dune classe

on creacutee N attributs correspondantsdont les noms sont la concateacutenation du nom de lattribut composite avec celui du sous-attribut

Exemple Exemple de classe dassociation

Conseil

Meacutethode Attributs simples

Meacutethode Attributs composites

Contenus annexes

42Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- - - -

Attribut composeacute

Classe1(ab_b1b_b2)

Pour chaque attribut multivalueacute b dune classe C

on creacutee une nouvelle relation RBqui comprend un attribut monovalueacute correspondant agrave bplus la cleacute de la relation repreacutesentant C la cleacute de RB est la concateacutenation des deux attributs

Attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Dans le cas ougrave le nombre maximum de est fini et petit on peut eacutegalement adopter la transformation b

suivante Classe1(ab1b2b3b4b5b6b7b8b9b10)

Si le nombre dattributs est infini ( ) cest impossible sil est trop grand ce nest pas souhaitableb[1]

On combine les regravegles eacutenonceacutees pour les attributs composeacutes et pour les attributs multivalueacutes

Attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Transformation des compositions (cf p42)

Meacutethode Attributs multivalueacutes

Meacutethode Attributs multivalueacutes (meacutethode alternative)

Meacutethode Attributs composeacutes multivalueacutes

Rappel Voir aussi

Contenus annexes

43Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

gt Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Compleacutement Attributs multivalueacutes et composeacutes

Contenus annexes

44Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

Rappel Voir aussi

Rappel

Meacutethode

Contenus annexes

45Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p48)

gt Transformation des associations 1N

Pour chaque association binaire de type 1N

on ajoute agrave la relation cocircteacute N une cleacute eacutetrangegravere vers la relation cocircteacute 1

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Meacutethode

Contenus annexes

46Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Association 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Contrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p46)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

R1

Compleacutement

Rappel

Meacutethode

Contenus annexes

47Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p47)

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Deacutefinition Projection

Contenus annexes

48Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Deacutefinition Projection

Contenus annexes

49Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Transformation des classes dassociation

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de lassociation NM

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Meacutethode Classe dassociation NM

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Passage UML-Relationnel Associations avanceacutees

11

En pratique on nutilise jamais en UML dassociation de degreacute supeacuterieur agrave 3

2 Passage UML-Relationnel Associations avanceacuteesObjectifs

Savoir faire le passage dun scheacutema conceptuel UML agrave un scheacutema relationnel dans tous les cas

Reconnaicirctre les cas de transformation qui se traitent toujours de la mecircme faccedilon et ceux qui neacutecessite une modeacutelisation compleacutementaire

21 Trousseau de cleacutes

En UML et en relationnel il existe plusieurs termes mobilisant le mot laquo cleacute raquo le seul concept qui est commun est le concept de Tous les autres sont speacutecifiques au niveau conceptuel ou relationnelcleacute

Cleacute (key)

Cleacute locale (local key)

Cleacute (key)

Cleacute candidate (candidate key)

Cleacute primaire (primary key) et Cleacute alternative (alternate key)

Cleacute artificielle (surrogate key) et Cleacute naturelle (natural key business key)

Cleacute eacutetrangegravere (foreign key)

Conseil Pas de degreacute supeacuterieur agrave 3

Attention

Rappel Concept commun au niveau UML et relationnel

Rappel Concept speacutecifique au niveau UML

Rappel Concepts speacutecifiques au niveau relationnel

Transformation des compositions

12

- -

Deacutefinition des cleacutes en relationnel

22 Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Transformation des agreacutegations

13

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

23 Transformation des agreacutegations

Les associations de type agreacutegation se traitent de la mecircme faccedilon que les associations classiques

Agreacutegation 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Compleacutement Attributs multivalueacutes et composeacutes

Rappel Voir aussi

Rappel Agreacutegation

Transformation des classes dassociation avec cleacute locale

14

- -

Agreacutegation NM

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2)

24 Transformation des classes dassociation avec cleacute locale

Les attributs de la classe dassociation

sont ajouteacutes agrave la relation issue de lassociation NM la cleacute locale de la classe dassociation est concateacuteneacutee aux cleacutes eacutetrangegraveres composant deacutejagrave la cleacute primaire de la relation dassociation

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Meacutethode Classe dassociation NM

Exercice

15

25 Correspondance entre UML et relationnel

Passsage UML vers Relationnel

Exercice

16

26 ExerciceQuel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

[ ]solution ndeg2 [ ] p53

Exercice

17

27 ExerciceSoit le scheacutema UML suivant

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

[ ]solution ndeg3 [ ] p54

Modeacutelisation avanceacutee des associations 11 en relationnel

18

-

- -

-

-

3 Modeacutelisation avanceacutee des associations 11 en relationnelObjectifs

Savoir faire le passage dun scheacutema conceptuel UML agrave un scheacutema relationnel

Connaicirctre les choix possibles pour le cas de lassociation 11 et savoir faire le meilleur choix

Il existe des formulations conceptuelles en UML qui sont plus deacutelicates agrave traduire au niveau logique en relationnel comme lassociation 11 Ces cas requiegraverent un choix eacuteclaireacute de la part du concepteur

31 Transformation des associations 11 (approche geacuteneacuterale)

Il existe deux solutions pour transformer une association 11

Avec deux relations on traite lassociation 11 comme une association 1N puis lon ajoute une contrainte UNIQUE sur la cleacute eacutetrangegravere pour limiter la cardinaliteacute maximale agrave 1 Avec une seule relation on fusionne les deux classes en une seule relation

Association 11

Une des deux relations est choisie pour porter la cleacute eacutetrangegravere on ajoute les contraintes ou (cleacute candidate) sur la cleacute eacutetrangegravere et si neacutecessaire une UNIQUE KEY

contrainte imposant linstanciation simultaneacutee des deux relations

Classe1(abc=gtClasse2) avec c UNIQUE ou KEY

Classe2(cd)

ou

Classe1(ab)

Classe2(cda=gtClasse1) avec a UNIQUE ou KEY

On creacuteeacute une seule relation contenant lensemble des attributs des deux classes

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Meacutethode Avec deux relations (cleacute eacutetrangegravere)

Meacutethode Avec une relation (fusion)

Transformation des associations 1111

19

- -

- - - - - -

- on choisit une cleacute parmi les cleacutes candidates

Classe12(abcd) avec c UNIQUE ou KEY

ou

Classe21(cdab) avec a UNIQUE ou KEY

Ce choix entre les deux meacutethodes sera conduit par une appreacuteciation du rapport entre

La complexiteacute introduite par le fait davoir deux relations lagrave ou une suffitLa pertinence de la seacuteparation des deux relations dun point de vue seacutemantiqueLes pertes de performance dues agrave leacuteclatement des relationsLes pertes de performance dues au fait davoir une grande relationLes questions de seacutecuriteacute et de sucircreteacute factoriseacutees ou non au niveau des deux relations

Dans le cas dune association 1111 il faudra ajouter une contrainte compleacutementaire

Transformation des associations 1111 (cf p19)

32 Transformation des associations 1111

Le plus souvent cest meacutethode par des relations qui est la plus adapteacutee agrave ce casfusionLorsquelle ne lest pas et que lon choisit deux relations il faut ajouter une contrainte dynamique qui controcirclera que les deux relations sont bien toujours instancieacutees ensembles Notons que la cleacute eacutetrangegravere peut ecirctre choisie comme cleacute primaire

Association 11

Classe12(abcd) avec c KEY

ou

Classe21(cdab) avec a KEY

ou

Classe1(abc=gtClasse2) avec c KEY

Classe2(cd)

Contrainte PROJECTION(Classe1c) = PROJECTION(Classe2c)

ou

Classe1(ab)

Remarque Fusion des relations dans le cas de la traduction de lassociation 11

Compleacutement

Meacutethode Association 1111

Transformation des associations 0111

20

-

-

-

-

Classe2(cda=gtClasse1) avec a KEY

Contrainte PROJECTION(Classe1a) = PROJECTION(Classe2a)

La contrainte dynamique exprimeacutee ici suit le mecircme principe que pour les association 1NContrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p44)

33 Transformation des associations 0111

Le plus souvent cest la meacutethode par les deux relations qui est la plus adapteacutee on choisira toujours la relation cocircteacute 01 pour ecirctre reacutefeacuterenccedilante

Il est possible dutiliser la fusion dans ce cas les cleacutes cocircteacute 01 deviennent des attributs il ne UNIQUE

peuvent plus ecirctre cleacutes pouvant ecirctre NULL

Association 011

Classe1(abc=gtClasse2) avec c KEY

Classe2(cd)

ou

Classe12(cdab) avec a UNIQUE

34 Transformation des associations 0101

On choisit la solution avec deux relations dun cocircteacute ou de lautre la cleacute eacutetrangegravere est associeacute agrave la contrainte ce nest pas une cleacute car elle peut ecirctre nulleUNIQUE

Il nest pas souhaitable de choisir la fusion lune des deux relations pouvant ecirctre nulle on ne pourrait plus trouver de cleacute naturelle

Association 0101

Classe1(abc=gtClasse2) avec c UNIQUE

Classe2(cd)

ou

Compleacutement Contrainte dynamique

Meacutethode Association 0111

Meacutethode Association 0101

Exemple de choix pour une relation 11

21

-

- -

-

-

Classe1(ab)

Classe2(cda=gtClasse1) avec a UNIQUE

35 Exemple de choix pour une relation 11

Soit deux entiteacutes homme et femme et une association mariage de cardinaliteacute 1111 entre ces deux entiteacutes (hommes et femmes sont donc obligatoirement marieacutes)Les entiteacutes homme et femme sont identifieacutees par un attribut nom (dans ce modegravele chaque personne a un nom unique on pourrait remplacer le nom par un identifiant comme le numeacutero de seacutecuriteacute social ou par une cleacute artificielle pour ecirctre plus proche de la reacutealiteacute)

Bien que de type 1111 le choix de la fusion nest pas tregraves opportun car il sagit bien dobjets distincts que lon veut modeacuteliser

On choisira donc plutocirct la repreacutesentation avec deux relationsLa cleacute eacutetrangegravere pourra ecirctre du cocircteacute homme ou femme mecircme si la pratique dominante nous incite agrave la mettre du cocircteacute femmeOn pourra eacutegalement deacutecider de prendre la cleacute eacutetrangegravere comme cleacute primaire

1 homme (nom)2 femme (mariage=gthomme nom) avec nom KEY3 Contrainte PROJ(hommenom) = PROJ(femmemariage)

Si lassociation avait eacuteteacute de cardinaliteacute 0101 (certains hommes et femmes ne sont pas marieacutes) un choix similaire se serait imposeacute avec limpossibiliteacute de choisir la cleacute eacutetrangegravere comme cleacute primaire celle-ci pouvant ecirctre nulle et neacutetant donc plus candidate

1 homme (nom)2 femme (nom mariage=gthomme) avec mariage UNIQUE

4 Autres eacuteleacutements utiles en UML packages et steacutereacuteotypesObjectifs

Maicirctriser le diagramme de classe UML dans le cas de la conception de BD

41 Paquetages

Les paquetages (plus communeacutement appeleacutes ) sont des eacuteleacutements servant agrave organiser un modegravelepackage

Ils sont particuliegraverement utiles degraves que le modegravele comporte de nombreuses classes et que celles-ci peuvent ecirctre trieacutees selon plusieurs aspects structurants

Exemple

Exemple

Deacutefinition Package

homme (nom)

femme (mariage=gthomme nom) avec nom KEY

Contrainte PROJ(hommenom) = PROJ(femmemariage)

homme (nom)

femme (nom mariage=gthomme) avec mariage UNIQUE

Steacutereacuteotype

22

Notation des paquetages en UML

Exemple dutilisation des packages

On repreacutesente chaque classe au sein dun Il est alors possible de faire une preacutesentation globale du packagemodegravele (tous les ) partielle (une partie des ) ou centreacutee sur un seul packages packages package

Pour une repreacutesentation partielle ou centreacutee sur un on repreacutesente les concerneacutes avec leurs package packagesclasses propres ainsi que toutes les classes lieacutees des autres packages (et seulement celles-ci)

Preacutesentation partielle du modegravele centreacutee sur un package

Syntaxe

Exemple

Meacutethode

Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt

23

42 Steacutereacuteotype

Un steacutereacuteotype UML est une syntaxe permettant dajouter de la seacutemantique agrave la modeacutelisation des classes Il permet de deacutefinir des afin de regrouper conceptuellement un ensemble de classes (agrave linstar types de classedune classe qui permet de regrouper conceptuellement un ensemble dobjets)

Cest une meacutecanique de meacuteta-modeacutelisation elle permet deacutetendre le meacuteta-modegravele UML cest agrave dire le modegravele conceptuel du modegravele conceptuel

Un meacuteta-modegravele est le modegravele dun modegravele Par exemple le meacuteta-modegravele UML comprend les concepts de classe attribut association cardinaliteacute composition agreacutegation contraintes annotations On mobilise ces concepts (on les instancie) pour exprimer un modegravele particulier suivant le formalisme UML

Les steacutereacuteotypes permettent donc dajouter au meacuteta-modegravele UML standard celui que tout le monde utilise des concepts locaux pour enrichir le langage de modeacutelisation que lon utilise pour reacutealiser des modegraveles

Notation dun steacutereacuteotype en UML

Un steacutereacuteotype speacutecifique enrichit le meacuteta-modegravele UML mais selon une seacutemantique qui est propre agrave celui qui la poseacute non standard donc La conseacutequence est que pour un tiers linterpreacutetation du steacutereacuteotype nest plus normaliseacutee et sera potentiellement plus facilement erroneacutee Il convient donc de ne pas abuser de cette meacutecanique

Deux ou trois steacutereacuteotypes speacutecifiques correctement deacutefinis sont faciles agrave transmettre plusieurs dizaines repreacutesenteraient un nouveau langage complet agrave apprendre pour le lecteur du modegravele

Il existe des steacutereacuteotypes fournit en standard par UML ou communeacutement utiliseacutes par les modeacutelisateurs Lavantage est quil seront compris plus largement au mecircme titre que le reste du meacuteta-modegravele (ils ont une valeur de standard)

43 Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt

Deacutefinition Steacutereacuteotype UML

Deacutefinition Meacuteta-modegravele

Syntaxe

Conseil Steacutereacuteotypes speacutecifiques et steacutereacuteotypes standard

Syntaxe

Type utilisateurs steacutereacuteotype ltltdataTypegtgt

24

Steacutereacuteotype UML permettant dexprimer une eacutenumeacuteration

Exemple de modeacutelisation UML deacutenumeacuteration

44 Type utilisateurs steacutereacuteotype ltltdataTypegtgt

Les types utilisateurs permettent de deacutefinir des types complexes propres en extension des types primaires (entier chaicircne date)

Steacutereacuteotype dataType

Steacutereacuteotype dataType (exemple)

Cette modeacutelisation est eacutequivalente agrave la modeacutelisation des attributs composeacutes directement dans la classe principale Cest une repreacutesentation plus standard en UML

Exemple

Syntaxe

Exemple

Meacutethode Attributs composeacutes

Synthegravese sur la modalisation UML et relationnelle

25

Quelques eacuteleacutements de stylistique UML

26

-

- -

-

-

-

- - -

- - - -

1

2

3

5 Synthegravese sur la modalisation UML et relationnelle51 Quelques eacuteleacutements de stylistique UML

Toutes les associations doivent ecirctre nommeacutees (sauf composition heacuteritage agreacutegation)Ne pas utiliser de nom geacuteneacuterique pour les Classes comme Entiteacute Classe Objet TrucEacuteviter les noms geacuteneacuteriques pour les associations (comme est associeacute agrave)Attention au sens des compositions et agreacutegation le losange est cocircteacute ensemble et noubliez pas les cardinaliteacutes notamment cocircteacute parties

Nutilisez pas le souligneacute ni les en UML pour identifier les cleacutes preacutefeacuterez la contrainte keyPreacutefeacuterez lheacuteritage aux booleacuteens de typage en UMLLes attributs deacuteriveacutes sont reacuteserveacutes aux deacuterivations simples (des attributs de la mecircme classe) si cest plus complexe preacutefeacuterez des meacutethodes (et dans le doute preacutecisez les modes de calcul sur le scheacutema ou dans une note agrave part)Donnez des exemples de contenu lorsque ce nest pas eacutevident (lorsque le couple nom dattribut et type ne permet pas de faccedilon eacutevidente de comprendre de quoi lon parle)Inutile de deacuteclarer le type booleacuteen en UML utilisez-le directement comme un type de donneacutees connu

Si tous vos heacuteritages sont exclusifs notez-le agrave part pour alleacuteger votre scheacutema (et eacuteviter labondance de XOR)

52 Attention aux cleacutes artificielles

en UML on ne pose jamais de cleacutes artificiellesen relationnel on pose rarement des cleacute artificielles sauf dans le cas de cleacutes eacutetrangegraveres vraiment trop compliqueacuteesen SQL on peut poser des cleacutes artificielles si on a une bonne raison (ce nest donc pas systeacutematique et cest agrave justifier)

On najoutera pas de cleacute artificielle en UML au moment de la modeacutelisation conceptuelle des donneacutees

Formellement en UML la notion de cleacute nexiste pas (contrairement agrave l ) elle est ajouteacutee par les E-A

pratiquants des BD

Logiquement on a pas besoin de cette notion en UML les cleacutes artificielles servent en relationnel et dans certains cas uniquementPratiquement cela peut conduire agrave des situations absurdes (comme enlever au niveau logique des cleacutes artificielles ajouteacutees au niveau conceptuel)

Attention

Conseil

Compleacutement

Fondamental

Cleacutes artificielles et niveau conceptuel

Bibliographie commenteacutee sur la modeacutelisation UML

27

-

-

- -

-

- -

-

-

3

4

5

si on fait du non-relationnel on ne doit pas ajouter de cleacutes artificielles dans certains cas (limbrication typiquement) cela arrive mecircme en relationnel avec la transformation de lheacuteritage (dans certains cas toujours)

Meacutethodologiquement il faut se concentrer agrave chaque phase sur ce qui est important donc au moment du MCD on traduit les besoins on repegravere les contraintes explicites (cleacute uniciteacute non nulliteacute) sans se preacuteoccuper de ce qui sera rendu neacutecessaire par la suite par la modeacutelisation relationnelle (les cleacutes eacutetrangegraveres par exemple) ou limpleacutementation (loptimisation par exemple) Agrave chaque jour suffit sa peine Peacutedagogiquement enfin les deacutebutants ont tendance (agrave cause des environnements de conception graphique comme phpMyAdmin notamment) agrave systeacutematiser les cleacutes artificielles en SQL (on pourrait en discuter) mais eacutegalement agrave ne pas faire le travail de recherche des cleacutes naturelles (au niveau relationnel notamment ce qui est une faute de modeacutelisation) Donc au plus tard on fait intervenir les cleacutes artificielles au plus on a une chance de penser aux cleacutes naturelles

Soit le modegravele relationnel suivant

1 Etu (id numEtu) avec numEtu cleacute 2 UV (id codeUv) avec codeUv cleacute3 Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

La question qui permet dafficher la liste des eacutetudiants (numEtu) avec leurs UVs (codeUv) neacutecessite une jointure des cleacutes artificielles Un modegravele sans ces cleacutes artificielles aurait eacuteteacute plus performant pour agrave causereacutepondre agrave cette question puisque toutes les informations se trouvent dans la relation Inscriptions

1 Etu (numEtu) 2 UV (codeUv) 3 Inscriptions (uv=gtUV etu=gtEtu)

Ne soyez pas systeacutematiqueIl est en effet freacutequent dans un projet reacuteel dadopter des cleacutes artificielles presque systeacutematiquement vous pourrez le faire en connaissance de cause quand vous aurez bien compris pourquoi cest inteacuteressant et quand ccedila ne lest pasLes cleacutes artificielles sont inteacuteressantes pour autre chose que les performances (leacutevolutiviteacute par exemple choisissez-les quand vous savez pourquoi)Les cleacutes artificielles ne dispensent pas de rechercher les cleacutes naturelles Les cleacutes artificielles ne sont pas la seule faccedilon doptimiser une base de donneacutees (indexation deacutenormalisation)

53 Bibliographie commenteacutee sur la modeacutelisation UML

Il existe de nombreux outils de modeacutelisation UML On pourra citer

logiciel Open Source et multi-plateformes facile dusage (qui marche neacuteanmoins mieux sur Linux Dia

que sur Windows)

(version gratuite)Objecteering

Cleacutes artificielles et optimisation est-il toujours plus performant dutiliser des cleacutes artificielles

Conseil

Compleacutement Outils de modeacutelisation UML

Etu (id numEtu) avec numEtu cleacute

UV (id codeUv) avec codeUv cleacute

Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

Etu (numEtu)

UV (codeUv)

Inscriptions (uv=gtUV etu=gtEtu)

Bibliographie commenteacutee sur la modeacutelisation UML

28

- - - - - -

- - - - - -

Agrave voir eacutegalement en Open Source ou (non testeacute par lauteur)ArgoUML EclipseUML

UML2 en action

Pour un aperccedilu plus deacutetailleacute des possibiliteacutes dexpression du diagramme de classe UML lire le chapitre 7 Deacuteveloppement du modegravele statique (pages 133 agrave 163)

On pourra notamment y trouver

Lassociation dagreacutegationLes proprieacuteteacutes dassociationLexpression de rocircles dans les associationsLes attributs de classeLes qualificatifsLes opeacuterations (ou meacutethodes)

Le chapitre donne de plus des conseils meacutethodologiques pour la conception (voir en particulier la synthegravese page 163)

On pourra eacutegalement y trouver

Des principes de choix de modeacutelisation entre attributs et classes et sur la segmentation des classesDes principes de seacutelection des attributs (redondance avec les associations avec les classes etc)Des principes de seacutelection des associationsDes principes de choix de cardinaliteacute (notamment pour la gestion dhistorisation)Des principes de seacutelection des relations de geacuteneacuteralisation (heacuteritage)Des principes dintroduction de meacutetaclasses (type)s

U M L e n Franccedilais

Une tregraves bonne reacutefeacuterence en ligne sur la modeacutelisation UML avec des cours des liens vers la norme etc

Le contenu deacutepasse tregraves largement lusage dUML pour la modeacutelisation de BD (et ne fait dailleurs pas de reacutefeacuterence preacutecise agrave ce sous-ensemble particulier)

On pourra consulter en particulier le chapitre sur les diagrammes de classe httpumlfreefrcoursi-p14html

UML en 5 eacutetapes

On consultera en particulier le tutoriel sur les diagrammes de classe httpdeveloppeurjournaldunetcomtutorielcpt010607cpt_umlintroshtml

Cinq petits conseils pour un scheacutema UML efficace

Compleacutement Modeacutelisation UML

Compleacutement Reacutefeacuterence UML en ligne

Compleacutement Tutoriel sur la modeacutelisation UML

Compleacutement Conseils

Synthegravese Les diagrammes de modeacutelisation conceptuelle

29

-

-

- -

-

- -

-

-

- -

-

- - - -

-

-

(chapitre 3)UML2 par la pratique

Des explications exemples et eacutetudes de cas

54 Synthegravese Les diagrammes de modeacutelisation conceptuelle

Un modegravele conceptuel peut ecirctre repreacutesenteacute sous forme de diagramme E-A ou sous forme de diagramme de classe UML

Classe ou Entiteacute

Attribut ou Proprieacuteteacute

TypeacuteMulti-valueacuteComposeacuteDeacuteriveacute

Meacutethode

ParamegravetresValeur de retour

Association

Association

VerbeCardinaliteacute

Heacuteritage

Heacuteritage dattributsHeacuteritage de meacutethodes

Composition (ou entiteacute faible)

Cardinaliteacute

Compleacutement Pratique

Exercices

30

-

-

-

-

-

-

-

1 2

1

1 Exercice Lab III[20 min]

Description du problegraveme

Un laboratoire souhaite geacuterer les meacutedicaments quil conccediloit

Un meacutedicament est deacutecrit par un nom qui permet de lidentifier En effet il nexiste pas deux meacutedicaments avec le mecircme nom Un meacutedicament comporte une description courte en franccedilais ainsi quune description longue en latin On gegravere aussi le conditionnement du meacutedicament cest agrave dire le nombre de pilules par boicircte (qui est un nombre entier)Agrave chaque meacutedicament on associe une liste deacutedieacutee de contre-indications geacuteneacuteralement plusieurs parfois aucune Les contre-indications sont trieacutees par ordre dimportance Lordre est total est strict pour un meacutedicament donc chaque contre-indication possegravede une importance et il nexiste pas deux contre-indications associeacutees au mecircme meacutedicament avec la mecircme importanceTout meacutedicament possegravede au moins un composant souvent plusieurs Un composant est identifieacute par un code unique et possegravede un intituleacute Tout composant peut intervenir dans la fabrication de plusieurs meacutedicaments Il existe des composants qui ne sont pas utiliseacutes pour fabriquer des meacutedicaments et que lon veut quand mecircme geacuterer

Donneacutees de test

Afin de mateacuterialiser notre base de donneacutees nous obtenons les descriptions suivantes

Le a pour description courte et pour description longue Chourix Meacutedicament contre la chute des chouxlaquo raquoVivamus fermentum semper porta Nunc diam velit adipiscing ut tristique vitae sagittis vel odio laquo

Il est conditionneacute en boicircte de 13Maecenas convallis ullamcorper ultricies Curabitur ornare raquoSes contre-indications sont

Le Chourix ne doit jamais ecirctre pris apregraves minuitLe Chourix ne doit jamais ecirctre mis au contact avec de leau

Ses composants sont le et le HG79 SN50Le a pour description courte et pour Tropas Meacutedicament contre les dysfonctionnements intellectuelslaquo raquodescription longue Suspendisse lectus leo consectetur in tempor sit amet placerat quis neque Etiam laquo

Il est conditionneacute en boicircte de 42luctus porttitor lorem sed suscipit est rutrum non raquoSes contre-indications sont

Le Tropas doit ecirctre gardeacute agrave labri de la lumiegravere du soleil

Son unique composant est le HG79Les composants existants sont

HG79 Vif-argent alleacutegeacute

ExercicesII

Exercice Eacutetudiants et UVs (introduction)

31

- - -

- - HG81 Vif-argent alourdi

SN50 Pur eacutetain

Question 1

Question 2

Question 3

2 Exercice Eacutetudiants et UVs (introduction)[20 min]

On dispose du scheacutema UML ci-apregraves qui deacutecrit des eacutetudiants des UV les notes obtenues par les eacutetudiants agrave ces UV et les diplocircmes dorigine de ces eacutetudiants

Eacutetudiants et UVs

key deacutesigne des cleacutes candidates ici toutes les cleacutes ne sont composeacutees que dun seul attributlocal key deacutesigne une cleacute localeun semestre est de la forme PYYYY ou AYYYY (ougrave YYYY deacutesigneacute une anneacutee sur 4 chiffre) exemple A2013 P2014

Rappel Notion de cleacute locale dans classes dassociation (cf p49)

Effectuez le modegravele conceptuel en UML de ce problegraveme

Indices

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans deacutedieacuteeles donneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition

[ ]solution ndeg4 [ ] p56

En mobilisant les regravegles adeacutequates proposer un modegravele logique de donneacutees correspondant en relationnel Le repeacuterage des domaines et des cleacutes est obligatoire

[ ]solution ndeg5 [ ] p57

Dessiner des tableaux remplis avec les donneacutees fournies en exemple afin de montrer que le modegravele fonctionne selon le besoin exprimeacute initialement On pourra mettre le premier mot seulement des descriptions pour gagner du temps

[ ]solution ndeg6 [ ] p57

Exercice Super-heacuteros relationnels I

32

-

-

Question

3 Exercice Super-heacuteros relationnels I[20 min]

La gamme de super-heacuteros GARVEL veut reacutealiser la base de donneacutees de leurs figurines articuleacutees La socieacuteteacute a fait reacutealiser un modegravele UML qui doit servir de point de deacutepart agrave la mise en œuvre

Modegravele UML Figurines GARVEL

Question

4 Exercice Objets Numeacuteriques Libres[30 min]

Lassociation ONL (Objets Numeacuteriques Libres) est une association de promotion des logiciels libres Elle souhaite exposer sur un site Internet une liste de logiciels libres Ce site sera adosseacute agrave une base de donneacutees relationnelle ou relationnel-objet La premiegravere eacutetape de sa deacutemarche est de reacutealiser un modegravele conceptuel repreacutesentant ce quelle souhaite faire

La base de donneacutees permet de geacuterer des applicationsLes applications sont identifieacutees par leur nom (LibreOffice Gimp) et leur version (10 21) et comportent une description courte et une URL Tous les attributs sont obligatoires Chaque application a une URL uniqueLa base de donneacutees permet de geacuterer des librairies

Traduire le scheacutema en modegravele logique relationnel ( )MLD1

On choisira obligatoirement les cleacutes primaires parmi celles neacutecessitant le plus petit nombre de bits possible pour leur codage

[ ]solution ndeg7 [ ] p57

Transformer le modegravele UML en modegravele relationnel (justifier les passages non triviaux en particulier la relation dheacuteritage)

[ ]solution ndeg8 [ ] p58

Exercice Objets Numeacuteriques Libres

33

-

-

-

-

-

-

-

-

-

-

-

-

Les librairies sont des logiciels mais pas des applications Elles ont les mecircmes attributs que les applications (nom version description courte URL) mais les URL ne sont pas neacutecessairement uniques Les applications peuvent deacutependre de librairies ou dautres applications et les librairies peuvent deacutependre dautres librairies (mais pas dune application)La base de donneacutees permet de geacuterer des composantsLes composants sont inteacutegreacutes agrave une application ou librairie Les composants ont un code interne agrave lapplication ou la librairie quil servent une version et une description courte et une URL Le code et le numeacutero de version permettent didentifier localement le composant au sein de la librairie ou de lapplication la description courte et lURL sont optionnellesLa base de donneacutees permet de geacuterer des licencesLes applications librairies et composants sont attacheacutes agrave une ou plusieurs licences identifieacutees par leur nom (GPL MPL) leur version et leur langue et comportant le texte inteacutegral de la licence Les versions des logiciels et licences sont de type numeacutero de licence majeur point numeacutero de licence mineur comme 10 ou 22La base de donneacutees permet de geacuterer des cateacutegoriesChaque logiciel est rangeacute dans une cateacutegorie principale et plusieurs cateacutegories secondaires Exemple de cateacutegories bureautique dessin multimeacutedia physique

Exemple (factice) de donneacutees

Applications

Scenari 41 une chaicircne eacuteditoriale XML httpscenariorg deacutepend de Libreoffice 43 et de ImageMagick 68Libreoffice 43 une suite bureautique WYSIWYG httplibreofficeorg

Librairie

ImageMagick 68 permet de creacuteer de convertir de modifier et dafficher des images http imagemagickorg

Composant

impng 02 est un composant de ImageMagick 68 permet de compresser une image au format PNG

Toutes ces applications librairies et composants sont disponibles sous une licence LGPL 30 et GPL 30 franccedilaisesToutes ces applications et librairies sont rangeacutees dans la cateacutegorie principale document Scenari est rangeacute dans la cateacutegorie secondaire Eacutedition WYSIWYM Libreoffice dans la cateacutegorie secondaire Bureautique ImageMagick dans la cateacutegorie secondaire Multimeacutedia

Question

Reacutealiser un MCD en UML[ ]solution ndeg9 [ ] p58

Devoirs

34

1 Exercice Arbre de scegravene 3D[30 minutes]

On souhaite pouvoir geacuterer les diffeacuterents eacuteleacutements composant des scegravenes 3D dans une base de donneacutees Une scegravene contient des objets qui eux-mecircmes peuvent appartenir agrave plusieurs scegravenes (au moins une) mais il ne peut y avoir plusieurs fois le mecircme objet dans une mecircme scegravene Dans chaque scegravene les objets peuvent ecirctre visibles ou invisibles Les scegravenes et les objets sont identifieacutes de maniegravere unique par un nom Une scegravene peut ecirctre active ou inactive Un objet a comme proprieacuteteacute une position dans lespace repreacutesenteacutee par un vecteur de reacuteels agrave trois composantes (x y z) Les objets sont organiseacutes de maniegravere hieacuterarchique un objet peut ecirctre parent de plusieurs objets et chaque objet peut avoir au plus un parent Des scripts peuvent ecirctre associeacutes agrave un objet ou agrave une scegravene (agrave lun ou agrave lautre mais pas aux deux) Un script est identifieacute de maniegravere unique par un nom et possegravede eacutegalement un attribut permettant de connaicirctre son eacutetat (actif ou inactif) Un personnage est un objet particulier qui possegravede des animations Une animation est relative agrave un personnage et est identifieacutee de maniegravere locale par un nom Agrave un objet est associeacute un maillage et celui-ci peut ecirctre utiliseacute par plusieurs objets Un maillage est identifieacute de maniegravere unique par un nom et est composeacute de plusieurs eacuteleacutements Chaque eacuteleacutement est relatif agrave un maillage et est identifieacute de maniegravere locale par un numeacutero Il existe exactement trois types deacuteleacutement des nœuds des arrecirctes et des faces Une face est deacutelimiteacutee par trois arrecirctes et chaque arrecircte est deacutelimiteacutee par deux nœuds Plusieurs arrecirctes peuvent partager un mecircme nœud et plusieurs faces peuvent partager une mecircme arrecircte Afin deacutevaluer la complexiteacute dune scegravene on souhaite pouvoir calculer le nombre de faces afficheacutees pour une scegravene donneacutee (cest-agrave-dire la somme du nombre de faces du maillage associeacute aux objets visibles de la scegravene) Un maillage possegravede plusieurs mateacuteriaux identifieacutes de maniegravere unique par un nom Un mateacuteriau peut ecirctre associeacute agrave plusieurs maillages Un mateacuteriau est caracteacuteriseacute par une couleur deacutefinie par un vecteur dentiers agrave quatre composantes rouge vert bleu alpha Un mateacuteriau peut posseacuteder une texture et celle-ci peut ecirctre utiliseacutee par plusieurs mateacuteriaux Une texture est identifieacutee de maniegravere unique par un nom et possegravede comme attribut une image

Question 1

Question 2

DevoirsIII

Proposez une clarification de ce problegraveme On pourra reclasser les informations par grande cateacutegorie scegravene objets scripts

Eacutetablissez un modegravele conceptuel en UML de ce problegraveme

Compleacutement Exercices de modeacutelisation suppleacutementaire

35

1 Exercice Appartements agrave louer[30 min]

Une agence dimmobilier (ventes et locations) veut geacuterer son parc dappartements dans une base de donneacutees Chaque appartement possegravede plusieurs piegraveces qui peuvent ecirctre des piegraveces dhabitation des piegraveces de rangement ou des commoditeacutes

Chaque piegravece a une superficie un nombre de prises eacutelectriques et des meubles Pour ces derniers on veut enregistrer le nom du modegravele et le type (chaise lit four etc) Rien nempecircche quune piegravece comporte plusieurs meubles identiques (par exemple plusieurs chaises PIN IQUEA) Les piegraveces dhabitation ont une ou plusieurs fenecirctres les piegraveces de rangement ont une ou plusieurs eacutetagegraveres et une surface de rangement utile totale On veut aussi savoir dans quelles piegraveces de rangement se situent les tableaux eacutelectriques de lappartement Finalement les piegraveces commoditeacutes peuvent ecirctre de trois types cuisine toilette ou salle de bain

Lagence veut aussi enregistrer les portes entre les diffeacuterentes piegraveces Une porte peut ecirctre agrave simple battant double battant coulissante ou une simple ouverture

Chaque appartement a une adresse une superficie totale (qui est la somme des superficies des piegraveces) et un type qui est la lettre T suivie du nombre de piegraveces dhabitation de lappartement Pour un appartement donneacute chaque piegravece est identifieacutee par un numeacutero (commenccedilant au numeacutero 1)

Lagence veut eacutegalement enregistrer le quartier ougrave se trouve lappartement auquel est lieacute un prix par megravetre carreacute Finalement elle veut garder un historique de lhistoire de lappartement les peacuteriodes pour lesquelles il est libre occupeacute en travaux ou vendu

Question

2 Exercice Objectifs[40 min]

Vous prenez la preacutesidence de lassociation Objectifs dont lobjet est daider ses eacutetudiants membres agrave mener des projets dans le cadre de leurs eacutetudes

Compleacutement Exercices de modeacutelisation suppleacutementaire

IV

Reacutealisez le diagramme UML reacutepondant aux besoins de cette agence[ ]solution ndeg10 [ ] p59

Exercice Objectifs

36

- - -

-

-

- - -

Vous constatez en arrivant dans lassociation que personne ne sait exactement quels sont les projets en cours ni qui fait quoi dans les projets Vous ne parvenez pas non plus agrave obtenir une liste exacte des partenaires sur lesquels lassociation peut compter La seule chose sur laquelle vous parvenez agrave mettre la main est un fichier tableur vaguement agrave jour

Vous deacutecidez quil est plus que temps de mettre en place une base de donneacutees afin dassurer la bonne gestion des informations les plus importantes pour lassociation Vous vous attachez pour cela agrave reacutealiser une analyse des besoins

Analysez les documents ci-apregraves

Etat des projets

Eacutetat des projets de lassociation Objectifs

Recueil de besoins

Agrave partir de leacutetude du fonctionnement actuel de lassociation vous relevez les choses importantes agrave geacuterer suivantes

Les membres de lassociation geacuteneacuteralement identifieacutes par leur preacutenomLes projets geacutereacutes par lassociation avec des dates de deacutebut et de fin preacutecises et un chef de projetLe deacutetail des tacircches de chaque projet avec leurs dates de deacutebut et de fin aussi et la liste de tous les membres qui y participentLa liste des partenaires des projets avec leur rocircle preacutecis pour chacun des projets auxquels ils participent

Afin de mieux geacuterer les attributions des projets il serait eacutegalement inteacuteressant de creacuteer une liste des speacutecialiteacutes correspondant agrave ce qui ce fait dans lassociation et daffecter une speacutecialiteacute agrave chaque membre ainsi quune agrave chaque projet pour voir si ce sont bien les membres les mieux adapteacutes qui travaille sur les projets

Recueil de donneacutees

Les discussions avec les anciens membres de lassociation vous apprennent les choses suivantes

Lassociation a termineacute de geacuterer les trois projets Comeacutedie Musicale geacutereacutee par Nathalie sur les trois premiers mois du semestre dautomne 1001 Science en fecircte geacutereacutee par Pierre sur tout le semestre de printemps 1003 et Nuit du picolo geacutereacutee par Julien en novembre 1001Les speacutecialiteacutes recenseacutees pour le moment sont Ville Universiteacute Sport Entreprise Culture InternationalIl faut au moins dix membres agrave lassociation (sinon elle ferme) recruter ceux qui manquentAidez lassociation agrave diviser ses projets en tacircches

Exercice Objectifs

37

- Les partenaires suivants aident ou ont aideacute lassociation la mairie pour la comeacutedie musicale et la science en fecircte qui apporte un soutien financier le ministegravere de la culture qui apporte son soutien logistique agrave la science en fecircte lassociation des commerccedilants de la ville qui apporte son soutien publicitaire agrave la comeacutedie musicale 1664 qui offre ses biegraveres agrave moitieacute prix pour la nuit du Picolo

Question 1

Question 2

Question 3

Afin de preacuteparer une analyse des besoins sommaire listez les donneacutees que vous devrez geacuterer agrave laide des documents et recueils de discussion agrave votre disposition Faites des hypothegraveses lorsque les donneacutees sont incomplegravetes ou incoheacuterentes

[ ]solution ndeg11 [ ] p59

Reacutealiser le MCD en UML et en E-A agrave partir des donneacutees preacutepareacutees dans la question preacuteceacutedente[ ]solution ndeg12 [ ] p60

Reacutealiser le MLD en relationnel en traduisant votre MCD[ ]solution ndeg13 [ ] p61

Contenus annexes

38Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

- - -

gt Attributs

Un attribut est une information eacuteleacutementaire qui caracteacuterise une classe et dont la valeur deacutepend de lobjet instancieacute

Le domaine des valeurs que peut prendre lattribut est fixeacute a prioriUn attribut est typeacute

Il peut prendre plusieurs valeurs distinctes dans son domaineUn attribut peut ecirctre multivalueacute Sa valeur alors est une fonction sur dautres attributs de la classeUn attribut peut ecirctre deacuteriveacute

(ou composite) Il joue alors le rocircle dun groupe dattributs (par Un attribut peut ecirctre composeacuteexemple une adresse peut ecirctre un attribut composeacute des attributs numeacutero type de voie nom de la voie) Cette notion renvoie agrave la notion de variable de type dans les langages de Record

programmation classiques

En UML on preacutefegravere lusage de meacutethodes aux attributs deacuteriveacutes On utilisera toujours des meacutethodes degraves que la valeur de lattribut deacuteriveacute deacutepend dautres attributs exteacuterieurs agrave sa classeEn UML on preacutefegravere lusage de compositions aux attributs composeacutes On utilisera toujours des compositions pour les attributs composeacutes et multivalueacutes

1 attributtype2 attribut_multivalueacute[nbMinValeursnbMaxValeurs]type3 attribut_deacuteriveacutetype4 attribut_composeacute5   - sous-attribut1type6   - sous-attribut2type7   -

Contenus annexes

Deacutefinition Attribut

Attention On utilise peu les attributs deacuteriveacutes et composeacutes en UML

Syntaxe

attributtype

attribut_multivalueacute[nbMinValeursnbMaxValeurs]type

attribut_deacuteriveacutetype

attribut_composeacute

  - sous-attribut1type

  - sous-attribut2type

  -

Contenus annexes

39Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Repreacutesentation dattributs en UML

Dans cet exemple les attributs Nom Preacutenom sont de type lun de 20 caractegraveres et lautre de 10 stringtandis que DateNaissance est de type et Age de type Preacutenom est un attribut multivalueacute ici date integerune personne peut avoir de 1 agrave 3 preacutenoms Age est un attribut deacuteriveacute il est calculeacute par une fonction sur DateNaissance

Meacutethodes (cf p39)

Composition (cf p5)

gt Meacutethodes

Une meacutethode (ou opeacuteration) est une fonction associeacutee agrave une classe dobjet qui permet dagir sur les objets de la classe ou qui permet agrave ces objets de renvoyer des valeurs (calculeacutees en fonction de paramegravetres)

1 methode(paramegravetres)type

Pour la modeacutelisation des bases de donneacutees les meacutethodes sont surtout utiliseacutees pour repreacutesenter des donneacutees calculeacutees (agrave linstar des attributs deacuteriveacutees) ou pour mettre en exergue des fonctions importantes du systegraveme cible Seules les meacutethodes les plus importantes sont repreacutesenteacutees lapproche est moins systeacutematique quen modeacutelisation objet par exemple

Lors de la transformation du modegravele conceptuel UML en modegravele logique relationnel les meacutethodes ne Leur repeacuterage au niveau conceptuel sert donc surtout daide-seront geacuteneacuteralement pas impleacutementeacutees

meacutemoire pour limpleacutementation au niveau applicatif

Exemple La classe Personne

Compleacutement Voir aussi

Deacutefinition Meacutethode

Syntaxe

Remarque Meacutethodes et modeacutelisation de BD

Remarque Meacutethodes relationnel relationnel-objet

methode(paramegravetres)type

Contenus annexes

40Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Au contraire un modegravele logique relationnel-objet permettra limpleacutementation de meacutethodes directement associeacutees agrave des tables Leur repeacuterage au niveau conceptuel est donc encore plus important

Transformation des meacutethodes par des vues (cf p40)

gt Transformation des meacutethodes par des vues

Lorsquune meacutethode est speacutecifieacutee sur un diagramme UML pour une classe C si cette meacutethode est une fonction relationnelle (elle renvoie une unique valeur et elle peut ecirctre reacutesolue par une requecircte SQL) alors on creacutee une vue qui reprend les attributs de la classe C et ajoute des colonnes calculeacutees pour les meacutethodes

Les attributs deacuteriveacutes eacutetant apparenteacutes agrave des meacutethodes ils peuvent eacutegalement ecirctre geacutereacutes par des vues

gt Classe dassociation

On utilise la notation des classes dassociation lorsque lon souhaite ajouter des proprieacuteteacutes agrave une association

Notation dune classe dassociation en UML

On reacuteserve en geacuteneacuteral les classes dassociation aux associations NM

Il est toujours possible de reacuteduire une classe dassociation sur une association 1N en migrant ses attributs sur la classe cocircteacute N et cest en geacuteneacuteral plus lisible ainsi

Compleacutement

Meacutethode

Remarque Attributs deacuteriveacutes

Deacutefinition Classe dassociation

Syntaxe Notation dune classe dassociation en UML

Meacutethode

Contenus annexes

41Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

-

Emplois

Selon le standard UML une classe dassociation est une classe et agrave ce titre elle peut ecirctre mobiliseacutee dans dautres associations ou dans des heacuteritages Nous deacuteconseillons neacuteanmoins ces notations qui ont tendance agrave complexifier la lecture et la transformation du diagramme

Nous conseillons donc de ne jamais associer une classe dassociation

gt Transformation des attributs

Pour chaque attribut eacuteleacutementaire et monovalueacute dune classe

on creacutee un attribut correspondant

Attribut

Classe1(ab)

Pour chaque attribut composite comprenant N sous-attributs dune classe

on creacutee N attributs correspondantsdont les noms sont la concateacutenation du nom de lattribut composite avec celui du sous-attribut

Exemple Exemple de classe dassociation

Conseil

Meacutethode Attributs simples

Meacutethode Attributs composites

Contenus annexes

42Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- - - -

Attribut composeacute

Classe1(ab_b1b_b2)

Pour chaque attribut multivalueacute b dune classe C

on creacutee une nouvelle relation RBqui comprend un attribut monovalueacute correspondant agrave bplus la cleacute de la relation repreacutesentant C la cleacute de RB est la concateacutenation des deux attributs

Attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Dans le cas ougrave le nombre maximum de est fini et petit on peut eacutegalement adopter la transformation b

suivante Classe1(ab1b2b3b4b5b6b7b8b9b10)

Si le nombre dattributs est infini ( ) cest impossible sil est trop grand ce nest pas souhaitableb[1]

On combine les regravegles eacutenonceacutees pour les attributs composeacutes et pour les attributs multivalueacutes

Attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Transformation des compositions (cf p42)

Meacutethode Attributs multivalueacutes

Meacutethode Attributs multivalueacutes (meacutethode alternative)

Meacutethode Attributs composeacutes multivalueacutes

Rappel Voir aussi

Contenus annexes

43Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

gt Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Compleacutement Attributs multivalueacutes et composeacutes

Contenus annexes

44Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

Rappel Voir aussi

Rappel

Meacutethode

Contenus annexes

45Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p48)

gt Transformation des associations 1N

Pour chaque association binaire de type 1N

on ajoute agrave la relation cocircteacute N une cleacute eacutetrangegravere vers la relation cocircteacute 1

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Meacutethode

Contenus annexes

46Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Association 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Contrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p46)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

R1

Compleacutement

Rappel

Meacutethode

Contenus annexes

47Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p47)

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Deacutefinition Projection

Contenus annexes

48Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Deacutefinition Projection

Contenus annexes

49Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Transformation des classes dassociation

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de lassociation NM

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Meacutethode Classe dassociation NM

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Transformation des compositions

12

- -

Deacutefinition des cleacutes en relationnel

22 Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Transformation des agreacutegations

13

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

23 Transformation des agreacutegations

Les associations de type agreacutegation se traitent de la mecircme faccedilon que les associations classiques

Agreacutegation 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Compleacutement Attributs multivalueacutes et composeacutes

Rappel Voir aussi

Rappel Agreacutegation

Transformation des classes dassociation avec cleacute locale

14

- -

Agreacutegation NM

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2)

24 Transformation des classes dassociation avec cleacute locale

Les attributs de la classe dassociation

sont ajouteacutes agrave la relation issue de lassociation NM la cleacute locale de la classe dassociation est concateacuteneacutee aux cleacutes eacutetrangegraveres composant deacutejagrave la cleacute primaire de la relation dassociation

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Meacutethode Classe dassociation NM

Exercice

15

25 Correspondance entre UML et relationnel

Passsage UML vers Relationnel

Exercice

16

26 ExerciceQuel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

[ ]solution ndeg2 [ ] p53

Exercice

17

27 ExerciceSoit le scheacutema UML suivant

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

[ ]solution ndeg3 [ ] p54

Modeacutelisation avanceacutee des associations 11 en relationnel

18

-

- -

-

-

3 Modeacutelisation avanceacutee des associations 11 en relationnelObjectifs

Savoir faire le passage dun scheacutema conceptuel UML agrave un scheacutema relationnel

Connaicirctre les choix possibles pour le cas de lassociation 11 et savoir faire le meilleur choix

Il existe des formulations conceptuelles en UML qui sont plus deacutelicates agrave traduire au niveau logique en relationnel comme lassociation 11 Ces cas requiegraverent un choix eacuteclaireacute de la part du concepteur

31 Transformation des associations 11 (approche geacuteneacuterale)

Il existe deux solutions pour transformer une association 11

Avec deux relations on traite lassociation 11 comme une association 1N puis lon ajoute une contrainte UNIQUE sur la cleacute eacutetrangegravere pour limiter la cardinaliteacute maximale agrave 1 Avec une seule relation on fusionne les deux classes en une seule relation

Association 11

Une des deux relations est choisie pour porter la cleacute eacutetrangegravere on ajoute les contraintes ou (cleacute candidate) sur la cleacute eacutetrangegravere et si neacutecessaire une UNIQUE KEY

contrainte imposant linstanciation simultaneacutee des deux relations

Classe1(abc=gtClasse2) avec c UNIQUE ou KEY

Classe2(cd)

ou

Classe1(ab)

Classe2(cda=gtClasse1) avec a UNIQUE ou KEY

On creacuteeacute une seule relation contenant lensemble des attributs des deux classes

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Meacutethode Avec deux relations (cleacute eacutetrangegravere)

Meacutethode Avec une relation (fusion)

Transformation des associations 1111

19

- -

- - - - - -

- on choisit une cleacute parmi les cleacutes candidates

Classe12(abcd) avec c UNIQUE ou KEY

ou

Classe21(cdab) avec a UNIQUE ou KEY

Ce choix entre les deux meacutethodes sera conduit par une appreacuteciation du rapport entre

La complexiteacute introduite par le fait davoir deux relations lagrave ou une suffitLa pertinence de la seacuteparation des deux relations dun point de vue seacutemantiqueLes pertes de performance dues agrave leacuteclatement des relationsLes pertes de performance dues au fait davoir une grande relationLes questions de seacutecuriteacute et de sucircreteacute factoriseacutees ou non au niveau des deux relations

Dans le cas dune association 1111 il faudra ajouter une contrainte compleacutementaire

Transformation des associations 1111 (cf p19)

32 Transformation des associations 1111

Le plus souvent cest meacutethode par des relations qui est la plus adapteacutee agrave ce casfusionLorsquelle ne lest pas et que lon choisit deux relations il faut ajouter une contrainte dynamique qui controcirclera que les deux relations sont bien toujours instancieacutees ensembles Notons que la cleacute eacutetrangegravere peut ecirctre choisie comme cleacute primaire

Association 11

Classe12(abcd) avec c KEY

ou

Classe21(cdab) avec a KEY

ou

Classe1(abc=gtClasse2) avec c KEY

Classe2(cd)

Contrainte PROJECTION(Classe1c) = PROJECTION(Classe2c)

ou

Classe1(ab)

Remarque Fusion des relations dans le cas de la traduction de lassociation 11

Compleacutement

Meacutethode Association 1111

Transformation des associations 0111

20

-

-

-

-

Classe2(cda=gtClasse1) avec a KEY

Contrainte PROJECTION(Classe1a) = PROJECTION(Classe2a)

La contrainte dynamique exprimeacutee ici suit le mecircme principe que pour les association 1NContrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p44)

33 Transformation des associations 0111

Le plus souvent cest la meacutethode par les deux relations qui est la plus adapteacutee on choisira toujours la relation cocircteacute 01 pour ecirctre reacutefeacuterenccedilante

Il est possible dutiliser la fusion dans ce cas les cleacutes cocircteacute 01 deviennent des attributs il ne UNIQUE

peuvent plus ecirctre cleacutes pouvant ecirctre NULL

Association 011

Classe1(abc=gtClasse2) avec c KEY

Classe2(cd)

ou

Classe12(cdab) avec a UNIQUE

34 Transformation des associations 0101

On choisit la solution avec deux relations dun cocircteacute ou de lautre la cleacute eacutetrangegravere est associeacute agrave la contrainte ce nest pas une cleacute car elle peut ecirctre nulleUNIQUE

Il nest pas souhaitable de choisir la fusion lune des deux relations pouvant ecirctre nulle on ne pourrait plus trouver de cleacute naturelle

Association 0101

Classe1(abc=gtClasse2) avec c UNIQUE

Classe2(cd)

ou

Compleacutement Contrainte dynamique

Meacutethode Association 0111

Meacutethode Association 0101

Exemple de choix pour une relation 11

21

-

- -

-

-

Classe1(ab)

Classe2(cda=gtClasse1) avec a UNIQUE

35 Exemple de choix pour une relation 11

Soit deux entiteacutes homme et femme et une association mariage de cardinaliteacute 1111 entre ces deux entiteacutes (hommes et femmes sont donc obligatoirement marieacutes)Les entiteacutes homme et femme sont identifieacutees par un attribut nom (dans ce modegravele chaque personne a un nom unique on pourrait remplacer le nom par un identifiant comme le numeacutero de seacutecuriteacute social ou par une cleacute artificielle pour ecirctre plus proche de la reacutealiteacute)

Bien que de type 1111 le choix de la fusion nest pas tregraves opportun car il sagit bien dobjets distincts que lon veut modeacuteliser

On choisira donc plutocirct la repreacutesentation avec deux relationsLa cleacute eacutetrangegravere pourra ecirctre du cocircteacute homme ou femme mecircme si la pratique dominante nous incite agrave la mettre du cocircteacute femmeOn pourra eacutegalement deacutecider de prendre la cleacute eacutetrangegravere comme cleacute primaire

1 homme (nom)2 femme (mariage=gthomme nom) avec nom KEY3 Contrainte PROJ(hommenom) = PROJ(femmemariage)

Si lassociation avait eacuteteacute de cardinaliteacute 0101 (certains hommes et femmes ne sont pas marieacutes) un choix similaire se serait imposeacute avec limpossibiliteacute de choisir la cleacute eacutetrangegravere comme cleacute primaire celle-ci pouvant ecirctre nulle et neacutetant donc plus candidate

1 homme (nom)2 femme (nom mariage=gthomme) avec mariage UNIQUE

4 Autres eacuteleacutements utiles en UML packages et steacutereacuteotypesObjectifs

Maicirctriser le diagramme de classe UML dans le cas de la conception de BD

41 Paquetages

Les paquetages (plus communeacutement appeleacutes ) sont des eacuteleacutements servant agrave organiser un modegravelepackage

Ils sont particuliegraverement utiles degraves que le modegravele comporte de nombreuses classes et que celles-ci peuvent ecirctre trieacutees selon plusieurs aspects structurants

Exemple

Exemple

Deacutefinition Package

homme (nom)

femme (mariage=gthomme nom) avec nom KEY

Contrainte PROJ(hommenom) = PROJ(femmemariage)

homme (nom)

femme (nom mariage=gthomme) avec mariage UNIQUE

Steacutereacuteotype

22

Notation des paquetages en UML

Exemple dutilisation des packages

On repreacutesente chaque classe au sein dun Il est alors possible de faire une preacutesentation globale du packagemodegravele (tous les ) partielle (une partie des ) ou centreacutee sur un seul packages packages package

Pour une repreacutesentation partielle ou centreacutee sur un on repreacutesente les concerneacutes avec leurs package packagesclasses propres ainsi que toutes les classes lieacutees des autres packages (et seulement celles-ci)

Preacutesentation partielle du modegravele centreacutee sur un package

Syntaxe

Exemple

Meacutethode

Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt

23

42 Steacutereacuteotype

Un steacutereacuteotype UML est une syntaxe permettant dajouter de la seacutemantique agrave la modeacutelisation des classes Il permet de deacutefinir des afin de regrouper conceptuellement un ensemble de classes (agrave linstar types de classedune classe qui permet de regrouper conceptuellement un ensemble dobjets)

Cest une meacutecanique de meacuteta-modeacutelisation elle permet deacutetendre le meacuteta-modegravele UML cest agrave dire le modegravele conceptuel du modegravele conceptuel

Un meacuteta-modegravele est le modegravele dun modegravele Par exemple le meacuteta-modegravele UML comprend les concepts de classe attribut association cardinaliteacute composition agreacutegation contraintes annotations On mobilise ces concepts (on les instancie) pour exprimer un modegravele particulier suivant le formalisme UML

Les steacutereacuteotypes permettent donc dajouter au meacuteta-modegravele UML standard celui que tout le monde utilise des concepts locaux pour enrichir le langage de modeacutelisation que lon utilise pour reacutealiser des modegraveles

Notation dun steacutereacuteotype en UML

Un steacutereacuteotype speacutecifique enrichit le meacuteta-modegravele UML mais selon une seacutemantique qui est propre agrave celui qui la poseacute non standard donc La conseacutequence est que pour un tiers linterpreacutetation du steacutereacuteotype nest plus normaliseacutee et sera potentiellement plus facilement erroneacutee Il convient donc de ne pas abuser de cette meacutecanique

Deux ou trois steacutereacuteotypes speacutecifiques correctement deacutefinis sont faciles agrave transmettre plusieurs dizaines repreacutesenteraient un nouveau langage complet agrave apprendre pour le lecteur du modegravele

Il existe des steacutereacuteotypes fournit en standard par UML ou communeacutement utiliseacutes par les modeacutelisateurs Lavantage est quil seront compris plus largement au mecircme titre que le reste du meacuteta-modegravele (ils ont une valeur de standard)

43 Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt

Deacutefinition Steacutereacuteotype UML

Deacutefinition Meacuteta-modegravele

Syntaxe

Conseil Steacutereacuteotypes speacutecifiques et steacutereacuteotypes standard

Syntaxe

Type utilisateurs steacutereacuteotype ltltdataTypegtgt

24

Steacutereacuteotype UML permettant dexprimer une eacutenumeacuteration

Exemple de modeacutelisation UML deacutenumeacuteration

44 Type utilisateurs steacutereacuteotype ltltdataTypegtgt

Les types utilisateurs permettent de deacutefinir des types complexes propres en extension des types primaires (entier chaicircne date)

Steacutereacuteotype dataType

Steacutereacuteotype dataType (exemple)

Cette modeacutelisation est eacutequivalente agrave la modeacutelisation des attributs composeacutes directement dans la classe principale Cest une repreacutesentation plus standard en UML

Exemple

Syntaxe

Exemple

Meacutethode Attributs composeacutes

Synthegravese sur la modalisation UML et relationnelle

25

Quelques eacuteleacutements de stylistique UML

26

-

- -

-

-

-

- - -

- - - -

1

2

3

5 Synthegravese sur la modalisation UML et relationnelle51 Quelques eacuteleacutements de stylistique UML

Toutes les associations doivent ecirctre nommeacutees (sauf composition heacuteritage agreacutegation)Ne pas utiliser de nom geacuteneacuterique pour les Classes comme Entiteacute Classe Objet TrucEacuteviter les noms geacuteneacuteriques pour les associations (comme est associeacute agrave)Attention au sens des compositions et agreacutegation le losange est cocircteacute ensemble et noubliez pas les cardinaliteacutes notamment cocircteacute parties

Nutilisez pas le souligneacute ni les en UML pour identifier les cleacutes preacutefeacuterez la contrainte keyPreacutefeacuterez lheacuteritage aux booleacuteens de typage en UMLLes attributs deacuteriveacutes sont reacuteserveacutes aux deacuterivations simples (des attributs de la mecircme classe) si cest plus complexe preacutefeacuterez des meacutethodes (et dans le doute preacutecisez les modes de calcul sur le scheacutema ou dans une note agrave part)Donnez des exemples de contenu lorsque ce nest pas eacutevident (lorsque le couple nom dattribut et type ne permet pas de faccedilon eacutevidente de comprendre de quoi lon parle)Inutile de deacuteclarer le type booleacuteen en UML utilisez-le directement comme un type de donneacutees connu

Si tous vos heacuteritages sont exclusifs notez-le agrave part pour alleacuteger votre scheacutema (et eacuteviter labondance de XOR)

52 Attention aux cleacutes artificielles

en UML on ne pose jamais de cleacutes artificiellesen relationnel on pose rarement des cleacute artificielles sauf dans le cas de cleacutes eacutetrangegraveres vraiment trop compliqueacuteesen SQL on peut poser des cleacutes artificielles si on a une bonne raison (ce nest donc pas systeacutematique et cest agrave justifier)

On najoutera pas de cleacute artificielle en UML au moment de la modeacutelisation conceptuelle des donneacutees

Formellement en UML la notion de cleacute nexiste pas (contrairement agrave l ) elle est ajouteacutee par les E-A

pratiquants des BD

Logiquement on a pas besoin de cette notion en UML les cleacutes artificielles servent en relationnel et dans certains cas uniquementPratiquement cela peut conduire agrave des situations absurdes (comme enlever au niveau logique des cleacutes artificielles ajouteacutees au niveau conceptuel)

Attention

Conseil

Compleacutement

Fondamental

Cleacutes artificielles et niveau conceptuel

Bibliographie commenteacutee sur la modeacutelisation UML

27

-

-

- -

-

- -

-

-

3

4

5

si on fait du non-relationnel on ne doit pas ajouter de cleacutes artificielles dans certains cas (limbrication typiquement) cela arrive mecircme en relationnel avec la transformation de lheacuteritage (dans certains cas toujours)

Meacutethodologiquement il faut se concentrer agrave chaque phase sur ce qui est important donc au moment du MCD on traduit les besoins on repegravere les contraintes explicites (cleacute uniciteacute non nulliteacute) sans se preacuteoccuper de ce qui sera rendu neacutecessaire par la suite par la modeacutelisation relationnelle (les cleacutes eacutetrangegraveres par exemple) ou limpleacutementation (loptimisation par exemple) Agrave chaque jour suffit sa peine Peacutedagogiquement enfin les deacutebutants ont tendance (agrave cause des environnements de conception graphique comme phpMyAdmin notamment) agrave systeacutematiser les cleacutes artificielles en SQL (on pourrait en discuter) mais eacutegalement agrave ne pas faire le travail de recherche des cleacutes naturelles (au niveau relationnel notamment ce qui est une faute de modeacutelisation) Donc au plus tard on fait intervenir les cleacutes artificielles au plus on a une chance de penser aux cleacutes naturelles

Soit le modegravele relationnel suivant

1 Etu (id numEtu) avec numEtu cleacute 2 UV (id codeUv) avec codeUv cleacute3 Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

La question qui permet dafficher la liste des eacutetudiants (numEtu) avec leurs UVs (codeUv) neacutecessite une jointure des cleacutes artificielles Un modegravele sans ces cleacutes artificielles aurait eacuteteacute plus performant pour agrave causereacutepondre agrave cette question puisque toutes les informations se trouvent dans la relation Inscriptions

1 Etu (numEtu) 2 UV (codeUv) 3 Inscriptions (uv=gtUV etu=gtEtu)

Ne soyez pas systeacutematiqueIl est en effet freacutequent dans un projet reacuteel dadopter des cleacutes artificielles presque systeacutematiquement vous pourrez le faire en connaissance de cause quand vous aurez bien compris pourquoi cest inteacuteressant et quand ccedila ne lest pasLes cleacutes artificielles sont inteacuteressantes pour autre chose que les performances (leacutevolutiviteacute par exemple choisissez-les quand vous savez pourquoi)Les cleacutes artificielles ne dispensent pas de rechercher les cleacutes naturelles Les cleacutes artificielles ne sont pas la seule faccedilon doptimiser une base de donneacutees (indexation deacutenormalisation)

53 Bibliographie commenteacutee sur la modeacutelisation UML

Il existe de nombreux outils de modeacutelisation UML On pourra citer

logiciel Open Source et multi-plateformes facile dusage (qui marche neacuteanmoins mieux sur Linux Dia

que sur Windows)

(version gratuite)Objecteering

Cleacutes artificielles et optimisation est-il toujours plus performant dutiliser des cleacutes artificielles

Conseil

Compleacutement Outils de modeacutelisation UML

Etu (id numEtu) avec numEtu cleacute

UV (id codeUv) avec codeUv cleacute

Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

Etu (numEtu)

UV (codeUv)

Inscriptions (uv=gtUV etu=gtEtu)

Bibliographie commenteacutee sur la modeacutelisation UML

28

- - - - - -

- - - - - -

Agrave voir eacutegalement en Open Source ou (non testeacute par lauteur)ArgoUML EclipseUML

UML2 en action

Pour un aperccedilu plus deacutetailleacute des possibiliteacutes dexpression du diagramme de classe UML lire le chapitre 7 Deacuteveloppement du modegravele statique (pages 133 agrave 163)

On pourra notamment y trouver

Lassociation dagreacutegationLes proprieacuteteacutes dassociationLexpression de rocircles dans les associationsLes attributs de classeLes qualificatifsLes opeacuterations (ou meacutethodes)

Le chapitre donne de plus des conseils meacutethodologiques pour la conception (voir en particulier la synthegravese page 163)

On pourra eacutegalement y trouver

Des principes de choix de modeacutelisation entre attributs et classes et sur la segmentation des classesDes principes de seacutelection des attributs (redondance avec les associations avec les classes etc)Des principes de seacutelection des associationsDes principes de choix de cardinaliteacute (notamment pour la gestion dhistorisation)Des principes de seacutelection des relations de geacuteneacuteralisation (heacuteritage)Des principes dintroduction de meacutetaclasses (type)s

U M L e n Franccedilais

Une tregraves bonne reacutefeacuterence en ligne sur la modeacutelisation UML avec des cours des liens vers la norme etc

Le contenu deacutepasse tregraves largement lusage dUML pour la modeacutelisation de BD (et ne fait dailleurs pas de reacutefeacuterence preacutecise agrave ce sous-ensemble particulier)

On pourra consulter en particulier le chapitre sur les diagrammes de classe httpumlfreefrcoursi-p14html

UML en 5 eacutetapes

On consultera en particulier le tutoriel sur les diagrammes de classe httpdeveloppeurjournaldunetcomtutorielcpt010607cpt_umlintroshtml

Cinq petits conseils pour un scheacutema UML efficace

Compleacutement Modeacutelisation UML

Compleacutement Reacutefeacuterence UML en ligne

Compleacutement Tutoriel sur la modeacutelisation UML

Compleacutement Conseils

Synthegravese Les diagrammes de modeacutelisation conceptuelle

29

-

-

- -

-

- -

-

-

- -

-

- - - -

-

-

(chapitre 3)UML2 par la pratique

Des explications exemples et eacutetudes de cas

54 Synthegravese Les diagrammes de modeacutelisation conceptuelle

Un modegravele conceptuel peut ecirctre repreacutesenteacute sous forme de diagramme E-A ou sous forme de diagramme de classe UML

Classe ou Entiteacute

Attribut ou Proprieacuteteacute

TypeacuteMulti-valueacuteComposeacuteDeacuteriveacute

Meacutethode

ParamegravetresValeur de retour

Association

Association

VerbeCardinaliteacute

Heacuteritage

Heacuteritage dattributsHeacuteritage de meacutethodes

Composition (ou entiteacute faible)

Cardinaliteacute

Compleacutement Pratique

Exercices

30

-

-

-

-

-

-

-

1 2

1

1 Exercice Lab III[20 min]

Description du problegraveme

Un laboratoire souhaite geacuterer les meacutedicaments quil conccediloit

Un meacutedicament est deacutecrit par un nom qui permet de lidentifier En effet il nexiste pas deux meacutedicaments avec le mecircme nom Un meacutedicament comporte une description courte en franccedilais ainsi quune description longue en latin On gegravere aussi le conditionnement du meacutedicament cest agrave dire le nombre de pilules par boicircte (qui est un nombre entier)Agrave chaque meacutedicament on associe une liste deacutedieacutee de contre-indications geacuteneacuteralement plusieurs parfois aucune Les contre-indications sont trieacutees par ordre dimportance Lordre est total est strict pour un meacutedicament donc chaque contre-indication possegravede une importance et il nexiste pas deux contre-indications associeacutees au mecircme meacutedicament avec la mecircme importanceTout meacutedicament possegravede au moins un composant souvent plusieurs Un composant est identifieacute par un code unique et possegravede un intituleacute Tout composant peut intervenir dans la fabrication de plusieurs meacutedicaments Il existe des composants qui ne sont pas utiliseacutes pour fabriquer des meacutedicaments et que lon veut quand mecircme geacuterer

Donneacutees de test

Afin de mateacuterialiser notre base de donneacutees nous obtenons les descriptions suivantes

Le a pour description courte et pour description longue Chourix Meacutedicament contre la chute des chouxlaquo raquoVivamus fermentum semper porta Nunc diam velit adipiscing ut tristique vitae sagittis vel odio laquo

Il est conditionneacute en boicircte de 13Maecenas convallis ullamcorper ultricies Curabitur ornare raquoSes contre-indications sont

Le Chourix ne doit jamais ecirctre pris apregraves minuitLe Chourix ne doit jamais ecirctre mis au contact avec de leau

Ses composants sont le et le HG79 SN50Le a pour description courte et pour Tropas Meacutedicament contre les dysfonctionnements intellectuelslaquo raquodescription longue Suspendisse lectus leo consectetur in tempor sit amet placerat quis neque Etiam laquo

Il est conditionneacute en boicircte de 42luctus porttitor lorem sed suscipit est rutrum non raquoSes contre-indications sont

Le Tropas doit ecirctre gardeacute agrave labri de la lumiegravere du soleil

Son unique composant est le HG79Les composants existants sont

HG79 Vif-argent alleacutegeacute

ExercicesII

Exercice Eacutetudiants et UVs (introduction)

31

- - -

- - HG81 Vif-argent alourdi

SN50 Pur eacutetain

Question 1

Question 2

Question 3

2 Exercice Eacutetudiants et UVs (introduction)[20 min]

On dispose du scheacutema UML ci-apregraves qui deacutecrit des eacutetudiants des UV les notes obtenues par les eacutetudiants agrave ces UV et les diplocircmes dorigine de ces eacutetudiants

Eacutetudiants et UVs

key deacutesigne des cleacutes candidates ici toutes les cleacutes ne sont composeacutees que dun seul attributlocal key deacutesigne une cleacute localeun semestre est de la forme PYYYY ou AYYYY (ougrave YYYY deacutesigneacute une anneacutee sur 4 chiffre) exemple A2013 P2014

Rappel Notion de cleacute locale dans classes dassociation (cf p49)

Effectuez le modegravele conceptuel en UML de ce problegraveme

Indices

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans deacutedieacuteeles donneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition

[ ]solution ndeg4 [ ] p56

En mobilisant les regravegles adeacutequates proposer un modegravele logique de donneacutees correspondant en relationnel Le repeacuterage des domaines et des cleacutes est obligatoire

[ ]solution ndeg5 [ ] p57

Dessiner des tableaux remplis avec les donneacutees fournies en exemple afin de montrer que le modegravele fonctionne selon le besoin exprimeacute initialement On pourra mettre le premier mot seulement des descriptions pour gagner du temps

[ ]solution ndeg6 [ ] p57

Exercice Super-heacuteros relationnels I

32

-

-

Question

3 Exercice Super-heacuteros relationnels I[20 min]

La gamme de super-heacuteros GARVEL veut reacutealiser la base de donneacutees de leurs figurines articuleacutees La socieacuteteacute a fait reacutealiser un modegravele UML qui doit servir de point de deacutepart agrave la mise en œuvre

Modegravele UML Figurines GARVEL

Question

4 Exercice Objets Numeacuteriques Libres[30 min]

Lassociation ONL (Objets Numeacuteriques Libres) est une association de promotion des logiciels libres Elle souhaite exposer sur un site Internet une liste de logiciels libres Ce site sera adosseacute agrave une base de donneacutees relationnelle ou relationnel-objet La premiegravere eacutetape de sa deacutemarche est de reacutealiser un modegravele conceptuel repreacutesentant ce quelle souhaite faire

La base de donneacutees permet de geacuterer des applicationsLes applications sont identifieacutees par leur nom (LibreOffice Gimp) et leur version (10 21) et comportent une description courte et une URL Tous les attributs sont obligatoires Chaque application a une URL uniqueLa base de donneacutees permet de geacuterer des librairies

Traduire le scheacutema en modegravele logique relationnel ( )MLD1

On choisira obligatoirement les cleacutes primaires parmi celles neacutecessitant le plus petit nombre de bits possible pour leur codage

[ ]solution ndeg7 [ ] p57

Transformer le modegravele UML en modegravele relationnel (justifier les passages non triviaux en particulier la relation dheacuteritage)

[ ]solution ndeg8 [ ] p58

Exercice Objets Numeacuteriques Libres

33

-

-

-

-

-

-

-

-

-

-

-

-

Les librairies sont des logiciels mais pas des applications Elles ont les mecircmes attributs que les applications (nom version description courte URL) mais les URL ne sont pas neacutecessairement uniques Les applications peuvent deacutependre de librairies ou dautres applications et les librairies peuvent deacutependre dautres librairies (mais pas dune application)La base de donneacutees permet de geacuterer des composantsLes composants sont inteacutegreacutes agrave une application ou librairie Les composants ont un code interne agrave lapplication ou la librairie quil servent une version et une description courte et une URL Le code et le numeacutero de version permettent didentifier localement le composant au sein de la librairie ou de lapplication la description courte et lURL sont optionnellesLa base de donneacutees permet de geacuterer des licencesLes applications librairies et composants sont attacheacutes agrave une ou plusieurs licences identifieacutees par leur nom (GPL MPL) leur version et leur langue et comportant le texte inteacutegral de la licence Les versions des logiciels et licences sont de type numeacutero de licence majeur point numeacutero de licence mineur comme 10 ou 22La base de donneacutees permet de geacuterer des cateacutegoriesChaque logiciel est rangeacute dans une cateacutegorie principale et plusieurs cateacutegories secondaires Exemple de cateacutegories bureautique dessin multimeacutedia physique

Exemple (factice) de donneacutees

Applications

Scenari 41 une chaicircne eacuteditoriale XML httpscenariorg deacutepend de Libreoffice 43 et de ImageMagick 68Libreoffice 43 une suite bureautique WYSIWYG httplibreofficeorg

Librairie

ImageMagick 68 permet de creacuteer de convertir de modifier et dafficher des images http imagemagickorg

Composant

impng 02 est un composant de ImageMagick 68 permet de compresser une image au format PNG

Toutes ces applications librairies et composants sont disponibles sous une licence LGPL 30 et GPL 30 franccedilaisesToutes ces applications et librairies sont rangeacutees dans la cateacutegorie principale document Scenari est rangeacute dans la cateacutegorie secondaire Eacutedition WYSIWYM Libreoffice dans la cateacutegorie secondaire Bureautique ImageMagick dans la cateacutegorie secondaire Multimeacutedia

Question

Reacutealiser un MCD en UML[ ]solution ndeg9 [ ] p58

Devoirs

34

1 Exercice Arbre de scegravene 3D[30 minutes]

On souhaite pouvoir geacuterer les diffeacuterents eacuteleacutements composant des scegravenes 3D dans une base de donneacutees Une scegravene contient des objets qui eux-mecircmes peuvent appartenir agrave plusieurs scegravenes (au moins une) mais il ne peut y avoir plusieurs fois le mecircme objet dans une mecircme scegravene Dans chaque scegravene les objets peuvent ecirctre visibles ou invisibles Les scegravenes et les objets sont identifieacutes de maniegravere unique par un nom Une scegravene peut ecirctre active ou inactive Un objet a comme proprieacuteteacute une position dans lespace repreacutesenteacutee par un vecteur de reacuteels agrave trois composantes (x y z) Les objets sont organiseacutes de maniegravere hieacuterarchique un objet peut ecirctre parent de plusieurs objets et chaque objet peut avoir au plus un parent Des scripts peuvent ecirctre associeacutes agrave un objet ou agrave une scegravene (agrave lun ou agrave lautre mais pas aux deux) Un script est identifieacute de maniegravere unique par un nom et possegravede eacutegalement un attribut permettant de connaicirctre son eacutetat (actif ou inactif) Un personnage est un objet particulier qui possegravede des animations Une animation est relative agrave un personnage et est identifieacutee de maniegravere locale par un nom Agrave un objet est associeacute un maillage et celui-ci peut ecirctre utiliseacute par plusieurs objets Un maillage est identifieacute de maniegravere unique par un nom et est composeacute de plusieurs eacuteleacutements Chaque eacuteleacutement est relatif agrave un maillage et est identifieacute de maniegravere locale par un numeacutero Il existe exactement trois types deacuteleacutement des nœuds des arrecirctes et des faces Une face est deacutelimiteacutee par trois arrecirctes et chaque arrecircte est deacutelimiteacutee par deux nœuds Plusieurs arrecirctes peuvent partager un mecircme nœud et plusieurs faces peuvent partager une mecircme arrecircte Afin deacutevaluer la complexiteacute dune scegravene on souhaite pouvoir calculer le nombre de faces afficheacutees pour une scegravene donneacutee (cest-agrave-dire la somme du nombre de faces du maillage associeacute aux objets visibles de la scegravene) Un maillage possegravede plusieurs mateacuteriaux identifieacutes de maniegravere unique par un nom Un mateacuteriau peut ecirctre associeacute agrave plusieurs maillages Un mateacuteriau est caracteacuteriseacute par une couleur deacutefinie par un vecteur dentiers agrave quatre composantes rouge vert bleu alpha Un mateacuteriau peut posseacuteder une texture et celle-ci peut ecirctre utiliseacutee par plusieurs mateacuteriaux Une texture est identifieacutee de maniegravere unique par un nom et possegravede comme attribut une image

Question 1

Question 2

DevoirsIII

Proposez une clarification de ce problegraveme On pourra reclasser les informations par grande cateacutegorie scegravene objets scripts

Eacutetablissez un modegravele conceptuel en UML de ce problegraveme

Compleacutement Exercices de modeacutelisation suppleacutementaire

35

1 Exercice Appartements agrave louer[30 min]

Une agence dimmobilier (ventes et locations) veut geacuterer son parc dappartements dans une base de donneacutees Chaque appartement possegravede plusieurs piegraveces qui peuvent ecirctre des piegraveces dhabitation des piegraveces de rangement ou des commoditeacutes

Chaque piegravece a une superficie un nombre de prises eacutelectriques et des meubles Pour ces derniers on veut enregistrer le nom du modegravele et le type (chaise lit four etc) Rien nempecircche quune piegravece comporte plusieurs meubles identiques (par exemple plusieurs chaises PIN IQUEA) Les piegraveces dhabitation ont une ou plusieurs fenecirctres les piegraveces de rangement ont une ou plusieurs eacutetagegraveres et une surface de rangement utile totale On veut aussi savoir dans quelles piegraveces de rangement se situent les tableaux eacutelectriques de lappartement Finalement les piegraveces commoditeacutes peuvent ecirctre de trois types cuisine toilette ou salle de bain

Lagence veut aussi enregistrer les portes entre les diffeacuterentes piegraveces Une porte peut ecirctre agrave simple battant double battant coulissante ou une simple ouverture

Chaque appartement a une adresse une superficie totale (qui est la somme des superficies des piegraveces) et un type qui est la lettre T suivie du nombre de piegraveces dhabitation de lappartement Pour un appartement donneacute chaque piegravece est identifieacutee par un numeacutero (commenccedilant au numeacutero 1)

Lagence veut eacutegalement enregistrer le quartier ougrave se trouve lappartement auquel est lieacute un prix par megravetre carreacute Finalement elle veut garder un historique de lhistoire de lappartement les peacuteriodes pour lesquelles il est libre occupeacute en travaux ou vendu

Question

2 Exercice Objectifs[40 min]

Vous prenez la preacutesidence de lassociation Objectifs dont lobjet est daider ses eacutetudiants membres agrave mener des projets dans le cadre de leurs eacutetudes

Compleacutement Exercices de modeacutelisation suppleacutementaire

IV

Reacutealisez le diagramme UML reacutepondant aux besoins de cette agence[ ]solution ndeg10 [ ] p59

Exercice Objectifs

36

- - -

-

-

- - -

Vous constatez en arrivant dans lassociation que personne ne sait exactement quels sont les projets en cours ni qui fait quoi dans les projets Vous ne parvenez pas non plus agrave obtenir une liste exacte des partenaires sur lesquels lassociation peut compter La seule chose sur laquelle vous parvenez agrave mettre la main est un fichier tableur vaguement agrave jour

Vous deacutecidez quil est plus que temps de mettre en place une base de donneacutees afin dassurer la bonne gestion des informations les plus importantes pour lassociation Vous vous attachez pour cela agrave reacutealiser une analyse des besoins

Analysez les documents ci-apregraves

Etat des projets

Eacutetat des projets de lassociation Objectifs

Recueil de besoins

Agrave partir de leacutetude du fonctionnement actuel de lassociation vous relevez les choses importantes agrave geacuterer suivantes

Les membres de lassociation geacuteneacuteralement identifieacutes par leur preacutenomLes projets geacutereacutes par lassociation avec des dates de deacutebut et de fin preacutecises et un chef de projetLe deacutetail des tacircches de chaque projet avec leurs dates de deacutebut et de fin aussi et la liste de tous les membres qui y participentLa liste des partenaires des projets avec leur rocircle preacutecis pour chacun des projets auxquels ils participent

Afin de mieux geacuterer les attributions des projets il serait eacutegalement inteacuteressant de creacuteer une liste des speacutecialiteacutes correspondant agrave ce qui ce fait dans lassociation et daffecter une speacutecialiteacute agrave chaque membre ainsi quune agrave chaque projet pour voir si ce sont bien les membres les mieux adapteacutes qui travaille sur les projets

Recueil de donneacutees

Les discussions avec les anciens membres de lassociation vous apprennent les choses suivantes

Lassociation a termineacute de geacuterer les trois projets Comeacutedie Musicale geacutereacutee par Nathalie sur les trois premiers mois du semestre dautomne 1001 Science en fecircte geacutereacutee par Pierre sur tout le semestre de printemps 1003 et Nuit du picolo geacutereacutee par Julien en novembre 1001Les speacutecialiteacutes recenseacutees pour le moment sont Ville Universiteacute Sport Entreprise Culture InternationalIl faut au moins dix membres agrave lassociation (sinon elle ferme) recruter ceux qui manquentAidez lassociation agrave diviser ses projets en tacircches

Exercice Objectifs

37

- Les partenaires suivants aident ou ont aideacute lassociation la mairie pour la comeacutedie musicale et la science en fecircte qui apporte un soutien financier le ministegravere de la culture qui apporte son soutien logistique agrave la science en fecircte lassociation des commerccedilants de la ville qui apporte son soutien publicitaire agrave la comeacutedie musicale 1664 qui offre ses biegraveres agrave moitieacute prix pour la nuit du Picolo

Question 1

Question 2

Question 3

Afin de preacuteparer une analyse des besoins sommaire listez les donneacutees que vous devrez geacuterer agrave laide des documents et recueils de discussion agrave votre disposition Faites des hypothegraveses lorsque les donneacutees sont incomplegravetes ou incoheacuterentes

[ ]solution ndeg11 [ ] p59

Reacutealiser le MCD en UML et en E-A agrave partir des donneacutees preacutepareacutees dans la question preacuteceacutedente[ ]solution ndeg12 [ ] p60

Reacutealiser le MLD en relationnel en traduisant votre MCD[ ]solution ndeg13 [ ] p61

Contenus annexes

38Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

- - -

gt Attributs

Un attribut est une information eacuteleacutementaire qui caracteacuterise une classe et dont la valeur deacutepend de lobjet instancieacute

Le domaine des valeurs que peut prendre lattribut est fixeacute a prioriUn attribut est typeacute

Il peut prendre plusieurs valeurs distinctes dans son domaineUn attribut peut ecirctre multivalueacute Sa valeur alors est une fonction sur dautres attributs de la classeUn attribut peut ecirctre deacuteriveacute

(ou composite) Il joue alors le rocircle dun groupe dattributs (par Un attribut peut ecirctre composeacuteexemple une adresse peut ecirctre un attribut composeacute des attributs numeacutero type de voie nom de la voie) Cette notion renvoie agrave la notion de variable de type dans les langages de Record

programmation classiques

En UML on preacutefegravere lusage de meacutethodes aux attributs deacuteriveacutes On utilisera toujours des meacutethodes degraves que la valeur de lattribut deacuteriveacute deacutepend dautres attributs exteacuterieurs agrave sa classeEn UML on preacutefegravere lusage de compositions aux attributs composeacutes On utilisera toujours des compositions pour les attributs composeacutes et multivalueacutes

1 attributtype2 attribut_multivalueacute[nbMinValeursnbMaxValeurs]type3 attribut_deacuteriveacutetype4 attribut_composeacute5   - sous-attribut1type6   - sous-attribut2type7   -

Contenus annexes

Deacutefinition Attribut

Attention On utilise peu les attributs deacuteriveacutes et composeacutes en UML

Syntaxe

attributtype

attribut_multivalueacute[nbMinValeursnbMaxValeurs]type

attribut_deacuteriveacutetype

attribut_composeacute

  - sous-attribut1type

  - sous-attribut2type

  -

Contenus annexes

39Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Repreacutesentation dattributs en UML

Dans cet exemple les attributs Nom Preacutenom sont de type lun de 20 caractegraveres et lautre de 10 stringtandis que DateNaissance est de type et Age de type Preacutenom est un attribut multivalueacute ici date integerune personne peut avoir de 1 agrave 3 preacutenoms Age est un attribut deacuteriveacute il est calculeacute par une fonction sur DateNaissance

Meacutethodes (cf p39)

Composition (cf p5)

gt Meacutethodes

Une meacutethode (ou opeacuteration) est une fonction associeacutee agrave une classe dobjet qui permet dagir sur les objets de la classe ou qui permet agrave ces objets de renvoyer des valeurs (calculeacutees en fonction de paramegravetres)

1 methode(paramegravetres)type

Pour la modeacutelisation des bases de donneacutees les meacutethodes sont surtout utiliseacutees pour repreacutesenter des donneacutees calculeacutees (agrave linstar des attributs deacuteriveacutees) ou pour mettre en exergue des fonctions importantes du systegraveme cible Seules les meacutethodes les plus importantes sont repreacutesenteacutees lapproche est moins systeacutematique quen modeacutelisation objet par exemple

Lors de la transformation du modegravele conceptuel UML en modegravele logique relationnel les meacutethodes ne Leur repeacuterage au niveau conceptuel sert donc surtout daide-seront geacuteneacuteralement pas impleacutementeacutees

meacutemoire pour limpleacutementation au niveau applicatif

Exemple La classe Personne

Compleacutement Voir aussi

Deacutefinition Meacutethode

Syntaxe

Remarque Meacutethodes et modeacutelisation de BD

Remarque Meacutethodes relationnel relationnel-objet

methode(paramegravetres)type

Contenus annexes

40Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Au contraire un modegravele logique relationnel-objet permettra limpleacutementation de meacutethodes directement associeacutees agrave des tables Leur repeacuterage au niveau conceptuel est donc encore plus important

Transformation des meacutethodes par des vues (cf p40)

gt Transformation des meacutethodes par des vues

Lorsquune meacutethode est speacutecifieacutee sur un diagramme UML pour une classe C si cette meacutethode est une fonction relationnelle (elle renvoie une unique valeur et elle peut ecirctre reacutesolue par une requecircte SQL) alors on creacutee une vue qui reprend les attributs de la classe C et ajoute des colonnes calculeacutees pour les meacutethodes

Les attributs deacuteriveacutes eacutetant apparenteacutes agrave des meacutethodes ils peuvent eacutegalement ecirctre geacutereacutes par des vues

gt Classe dassociation

On utilise la notation des classes dassociation lorsque lon souhaite ajouter des proprieacuteteacutes agrave une association

Notation dune classe dassociation en UML

On reacuteserve en geacuteneacuteral les classes dassociation aux associations NM

Il est toujours possible de reacuteduire une classe dassociation sur une association 1N en migrant ses attributs sur la classe cocircteacute N et cest en geacuteneacuteral plus lisible ainsi

Compleacutement

Meacutethode

Remarque Attributs deacuteriveacutes

Deacutefinition Classe dassociation

Syntaxe Notation dune classe dassociation en UML

Meacutethode

Contenus annexes

41Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

-

Emplois

Selon le standard UML une classe dassociation est une classe et agrave ce titre elle peut ecirctre mobiliseacutee dans dautres associations ou dans des heacuteritages Nous deacuteconseillons neacuteanmoins ces notations qui ont tendance agrave complexifier la lecture et la transformation du diagramme

Nous conseillons donc de ne jamais associer une classe dassociation

gt Transformation des attributs

Pour chaque attribut eacuteleacutementaire et monovalueacute dune classe

on creacutee un attribut correspondant

Attribut

Classe1(ab)

Pour chaque attribut composite comprenant N sous-attributs dune classe

on creacutee N attributs correspondantsdont les noms sont la concateacutenation du nom de lattribut composite avec celui du sous-attribut

Exemple Exemple de classe dassociation

Conseil

Meacutethode Attributs simples

Meacutethode Attributs composites

Contenus annexes

42Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- - - -

Attribut composeacute

Classe1(ab_b1b_b2)

Pour chaque attribut multivalueacute b dune classe C

on creacutee une nouvelle relation RBqui comprend un attribut monovalueacute correspondant agrave bplus la cleacute de la relation repreacutesentant C la cleacute de RB est la concateacutenation des deux attributs

Attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Dans le cas ougrave le nombre maximum de est fini et petit on peut eacutegalement adopter la transformation b

suivante Classe1(ab1b2b3b4b5b6b7b8b9b10)

Si le nombre dattributs est infini ( ) cest impossible sil est trop grand ce nest pas souhaitableb[1]

On combine les regravegles eacutenonceacutees pour les attributs composeacutes et pour les attributs multivalueacutes

Attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Transformation des compositions (cf p42)

Meacutethode Attributs multivalueacutes

Meacutethode Attributs multivalueacutes (meacutethode alternative)

Meacutethode Attributs composeacutes multivalueacutes

Rappel Voir aussi

Contenus annexes

43Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

gt Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Compleacutement Attributs multivalueacutes et composeacutes

Contenus annexes

44Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

Rappel Voir aussi

Rappel

Meacutethode

Contenus annexes

45Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p48)

gt Transformation des associations 1N

Pour chaque association binaire de type 1N

on ajoute agrave la relation cocircteacute N une cleacute eacutetrangegravere vers la relation cocircteacute 1

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Meacutethode

Contenus annexes

46Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Association 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Contrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p46)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

R1

Compleacutement

Rappel

Meacutethode

Contenus annexes

47Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p47)

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Deacutefinition Projection

Contenus annexes

48Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Deacutefinition Projection

Contenus annexes

49Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Transformation des classes dassociation

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de lassociation NM

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Meacutethode Classe dassociation NM

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Transformation des agreacutegations

13

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

23 Transformation des agreacutegations

Les associations de type agreacutegation se traitent de la mecircme faccedilon que les associations classiques

Agreacutegation 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Compleacutement Attributs multivalueacutes et composeacutes

Rappel Voir aussi

Rappel Agreacutegation

Transformation des classes dassociation avec cleacute locale

14

- -

Agreacutegation NM

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2)

24 Transformation des classes dassociation avec cleacute locale

Les attributs de la classe dassociation

sont ajouteacutes agrave la relation issue de lassociation NM la cleacute locale de la classe dassociation est concateacuteneacutee aux cleacutes eacutetrangegraveres composant deacutejagrave la cleacute primaire de la relation dassociation

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Meacutethode Classe dassociation NM

Exercice

15

25 Correspondance entre UML et relationnel

Passsage UML vers Relationnel

Exercice

16

26 ExerciceQuel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

[ ]solution ndeg2 [ ] p53

Exercice

17

27 ExerciceSoit le scheacutema UML suivant

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

[ ]solution ndeg3 [ ] p54

Modeacutelisation avanceacutee des associations 11 en relationnel

18

-

- -

-

-

3 Modeacutelisation avanceacutee des associations 11 en relationnelObjectifs

Savoir faire le passage dun scheacutema conceptuel UML agrave un scheacutema relationnel

Connaicirctre les choix possibles pour le cas de lassociation 11 et savoir faire le meilleur choix

Il existe des formulations conceptuelles en UML qui sont plus deacutelicates agrave traduire au niveau logique en relationnel comme lassociation 11 Ces cas requiegraverent un choix eacuteclaireacute de la part du concepteur

31 Transformation des associations 11 (approche geacuteneacuterale)

Il existe deux solutions pour transformer une association 11

Avec deux relations on traite lassociation 11 comme une association 1N puis lon ajoute une contrainte UNIQUE sur la cleacute eacutetrangegravere pour limiter la cardinaliteacute maximale agrave 1 Avec une seule relation on fusionne les deux classes en une seule relation

Association 11

Une des deux relations est choisie pour porter la cleacute eacutetrangegravere on ajoute les contraintes ou (cleacute candidate) sur la cleacute eacutetrangegravere et si neacutecessaire une UNIQUE KEY

contrainte imposant linstanciation simultaneacutee des deux relations

Classe1(abc=gtClasse2) avec c UNIQUE ou KEY

Classe2(cd)

ou

Classe1(ab)

Classe2(cda=gtClasse1) avec a UNIQUE ou KEY

On creacuteeacute une seule relation contenant lensemble des attributs des deux classes

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Meacutethode Avec deux relations (cleacute eacutetrangegravere)

Meacutethode Avec une relation (fusion)

Transformation des associations 1111

19

- -

- - - - - -

- on choisit une cleacute parmi les cleacutes candidates

Classe12(abcd) avec c UNIQUE ou KEY

ou

Classe21(cdab) avec a UNIQUE ou KEY

Ce choix entre les deux meacutethodes sera conduit par une appreacuteciation du rapport entre

La complexiteacute introduite par le fait davoir deux relations lagrave ou une suffitLa pertinence de la seacuteparation des deux relations dun point de vue seacutemantiqueLes pertes de performance dues agrave leacuteclatement des relationsLes pertes de performance dues au fait davoir une grande relationLes questions de seacutecuriteacute et de sucircreteacute factoriseacutees ou non au niveau des deux relations

Dans le cas dune association 1111 il faudra ajouter une contrainte compleacutementaire

Transformation des associations 1111 (cf p19)

32 Transformation des associations 1111

Le plus souvent cest meacutethode par des relations qui est la plus adapteacutee agrave ce casfusionLorsquelle ne lest pas et que lon choisit deux relations il faut ajouter une contrainte dynamique qui controcirclera que les deux relations sont bien toujours instancieacutees ensembles Notons que la cleacute eacutetrangegravere peut ecirctre choisie comme cleacute primaire

Association 11

Classe12(abcd) avec c KEY

ou

Classe21(cdab) avec a KEY

ou

Classe1(abc=gtClasse2) avec c KEY

Classe2(cd)

Contrainte PROJECTION(Classe1c) = PROJECTION(Classe2c)

ou

Classe1(ab)

Remarque Fusion des relations dans le cas de la traduction de lassociation 11

Compleacutement

Meacutethode Association 1111

Transformation des associations 0111

20

-

-

-

-

Classe2(cda=gtClasse1) avec a KEY

Contrainte PROJECTION(Classe1a) = PROJECTION(Classe2a)

La contrainte dynamique exprimeacutee ici suit le mecircme principe que pour les association 1NContrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p44)

33 Transformation des associations 0111

Le plus souvent cest la meacutethode par les deux relations qui est la plus adapteacutee on choisira toujours la relation cocircteacute 01 pour ecirctre reacutefeacuterenccedilante

Il est possible dutiliser la fusion dans ce cas les cleacutes cocircteacute 01 deviennent des attributs il ne UNIQUE

peuvent plus ecirctre cleacutes pouvant ecirctre NULL

Association 011

Classe1(abc=gtClasse2) avec c KEY

Classe2(cd)

ou

Classe12(cdab) avec a UNIQUE

34 Transformation des associations 0101

On choisit la solution avec deux relations dun cocircteacute ou de lautre la cleacute eacutetrangegravere est associeacute agrave la contrainte ce nest pas une cleacute car elle peut ecirctre nulleUNIQUE

Il nest pas souhaitable de choisir la fusion lune des deux relations pouvant ecirctre nulle on ne pourrait plus trouver de cleacute naturelle

Association 0101

Classe1(abc=gtClasse2) avec c UNIQUE

Classe2(cd)

ou

Compleacutement Contrainte dynamique

Meacutethode Association 0111

Meacutethode Association 0101

Exemple de choix pour une relation 11

21

-

- -

-

-

Classe1(ab)

Classe2(cda=gtClasse1) avec a UNIQUE

35 Exemple de choix pour une relation 11

Soit deux entiteacutes homme et femme et une association mariage de cardinaliteacute 1111 entre ces deux entiteacutes (hommes et femmes sont donc obligatoirement marieacutes)Les entiteacutes homme et femme sont identifieacutees par un attribut nom (dans ce modegravele chaque personne a un nom unique on pourrait remplacer le nom par un identifiant comme le numeacutero de seacutecuriteacute social ou par une cleacute artificielle pour ecirctre plus proche de la reacutealiteacute)

Bien que de type 1111 le choix de la fusion nest pas tregraves opportun car il sagit bien dobjets distincts que lon veut modeacuteliser

On choisira donc plutocirct la repreacutesentation avec deux relationsLa cleacute eacutetrangegravere pourra ecirctre du cocircteacute homme ou femme mecircme si la pratique dominante nous incite agrave la mettre du cocircteacute femmeOn pourra eacutegalement deacutecider de prendre la cleacute eacutetrangegravere comme cleacute primaire

1 homme (nom)2 femme (mariage=gthomme nom) avec nom KEY3 Contrainte PROJ(hommenom) = PROJ(femmemariage)

Si lassociation avait eacuteteacute de cardinaliteacute 0101 (certains hommes et femmes ne sont pas marieacutes) un choix similaire se serait imposeacute avec limpossibiliteacute de choisir la cleacute eacutetrangegravere comme cleacute primaire celle-ci pouvant ecirctre nulle et neacutetant donc plus candidate

1 homme (nom)2 femme (nom mariage=gthomme) avec mariage UNIQUE

4 Autres eacuteleacutements utiles en UML packages et steacutereacuteotypesObjectifs

Maicirctriser le diagramme de classe UML dans le cas de la conception de BD

41 Paquetages

Les paquetages (plus communeacutement appeleacutes ) sont des eacuteleacutements servant agrave organiser un modegravelepackage

Ils sont particuliegraverement utiles degraves que le modegravele comporte de nombreuses classes et que celles-ci peuvent ecirctre trieacutees selon plusieurs aspects structurants

Exemple

Exemple

Deacutefinition Package

homme (nom)

femme (mariage=gthomme nom) avec nom KEY

Contrainte PROJ(hommenom) = PROJ(femmemariage)

homme (nom)

femme (nom mariage=gthomme) avec mariage UNIQUE

Steacutereacuteotype

22

Notation des paquetages en UML

Exemple dutilisation des packages

On repreacutesente chaque classe au sein dun Il est alors possible de faire une preacutesentation globale du packagemodegravele (tous les ) partielle (une partie des ) ou centreacutee sur un seul packages packages package

Pour une repreacutesentation partielle ou centreacutee sur un on repreacutesente les concerneacutes avec leurs package packagesclasses propres ainsi que toutes les classes lieacutees des autres packages (et seulement celles-ci)

Preacutesentation partielle du modegravele centreacutee sur un package

Syntaxe

Exemple

Meacutethode

Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt

23

42 Steacutereacuteotype

Un steacutereacuteotype UML est une syntaxe permettant dajouter de la seacutemantique agrave la modeacutelisation des classes Il permet de deacutefinir des afin de regrouper conceptuellement un ensemble de classes (agrave linstar types de classedune classe qui permet de regrouper conceptuellement un ensemble dobjets)

Cest une meacutecanique de meacuteta-modeacutelisation elle permet deacutetendre le meacuteta-modegravele UML cest agrave dire le modegravele conceptuel du modegravele conceptuel

Un meacuteta-modegravele est le modegravele dun modegravele Par exemple le meacuteta-modegravele UML comprend les concepts de classe attribut association cardinaliteacute composition agreacutegation contraintes annotations On mobilise ces concepts (on les instancie) pour exprimer un modegravele particulier suivant le formalisme UML

Les steacutereacuteotypes permettent donc dajouter au meacuteta-modegravele UML standard celui que tout le monde utilise des concepts locaux pour enrichir le langage de modeacutelisation que lon utilise pour reacutealiser des modegraveles

Notation dun steacutereacuteotype en UML

Un steacutereacuteotype speacutecifique enrichit le meacuteta-modegravele UML mais selon une seacutemantique qui est propre agrave celui qui la poseacute non standard donc La conseacutequence est que pour un tiers linterpreacutetation du steacutereacuteotype nest plus normaliseacutee et sera potentiellement plus facilement erroneacutee Il convient donc de ne pas abuser de cette meacutecanique

Deux ou trois steacutereacuteotypes speacutecifiques correctement deacutefinis sont faciles agrave transmettre plusieurs dizaines repreacutesenteraient un nouveau langage complet agrave apprendre pour le lecteur du modegravele

Il existe des steacutereacuteotypes fournit en standard par UML ou communeacutement utiliseacutes par les modeacutelisateurs Lavantage est quil seront compris plus largement au mecircme titre que le reste du meacuteta-modegravele (ils ont une valeur de standard)

43 Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt

Deacutefinition Steacutereacuteotype UML

Deacutefinition Meacuteta-modegravele

Syntaxe

Conseil Steacutereacuteotypes speacutecifiques et steacutereacuteotypes standard

Syntaxe

Type utilisateurs steacutereacuteotype ltltdataTypegtgt

24

Steacutereacuteotype UML permettant dexprimer une eacutenumeacuteration

Exemple de modeacutelisation UML deacutenumeacuteration

44 Type utilisateurs steacutereacuteotype ltltdataTypegtgt

Les types utilisateurs permettent de deacutefinir des types complexes propres en extension des types primaires (entier chaicircne date)

Steacutereacuteotype dataType

Steacutereacuteotype dataType (exemple)

Cette modeacutelisation est eacutequivalente agrave la modeacutelisation des attributs composeacutes directement dans la classe principale Cest une repreacutesentation plus standard en UML

Exemple

Syntaxe

Exemple

Meacutethode Attributs composeacutes

Synthegravese sur la modalisation UML et relationnelle

25

Quelques eacuteleacutements de stylistique UML

26

-

- -

-

-

-

- - -

- - - -

1

2

3

5 Synthegravese sur la modalisation UML et relationnelle51 Quelques eacuteleacutements de stylistique UML

Toutes les associations doivent ecirctre nommeacutees (sauf composition heacuteritage agreacutegation)Ne pas utiliser de nom geacuteneacuterique pour les Classes comme Entiteacute Classe Objet TrucEacuteviter les noms geacuteneacuteriques pour les associations (comme est associeacute agrave)Attention au sens des compositions et agreacutegation le losange est cocircteacute ensemble et noubliez pas les cardinaliteacutes notamment cocircteacute parties

Nutilisez pas le souligneacute ni les en UML pour identifier les cleacutes preacutefeacuterez la contrainte keyPreacutefeacuterez lheacuteritage aux booleacuteens de typage en UMLLes attributs deacuteriveacutes sont reacuteserveacutes aux deacuterivations simples (des attributs de la mecircme classe) si cest plus complexe preacutefeacuterez des meacutethodes (et dans le doute preacutecisez les modes de calcul sur le scheacutema ou dans une note agrave part)Donnez des exemples de contenu lorsque ce nest pas eacutevident (lorsque le couple nom dattribut et type ne permet pas de faccedilon eacutevidente de comprendre de quoi lon parle)Inutile de deacuteclarer le type booleacuteen en UML utilisez-le directement comme un type de donneacutees connu

Si tous vos heacuteritages sont exclusifs notez-le agrave part pour alleacuteger votre scheacutema (et eacuteviter labondance de XOR)

52 Attention aux cleacutes artificielles

en UML on ne pose jamais de cleacutes artificiellesen relationnel on pose rarement des cleacute artificielles sauf dans le cas de cleacutes eacutetrangegraveres vraiment trop compliqueacuteesen SQL on peut poser des cleacutes artificielles si on a une bonne raison (ce nest donc pas systeacutematique et cest agrave justifier)

On najoutera pas de cleacute artificielle en UML au moment de la modeacutelisation conceptuelle des donneacutees

Formellement en UML la notion de cleacute nexiste pas (contrairement agrave l ) elle est ajouteacutee par les E-A

pratiquants des BD

Logiquement on a pas besoin de cette notion en UML les cleacutes artificielles servent en relationnel et dans certains cas uniquementPratiquement cela peut conduire agrave des situations absurdes (comme enlever au niveau logique des cleacutes artificielles ajouteacutees au niveau conceptuel)

Attention

Conseil

Compleacutement

Fondamental

Cleacutes artificielles et niveau conceptuel

Bibliographie commenteacutee sur la modeacutelisation UML

27

-

-

- -

-

- -

-

-

3

4

5

si on fait du non-relationnel on ne doit pas ajouter de cleacutes artificielles dans certains cas (limbrication typiquement) cela arrive mecircme en relationnel avec la transformation de lheacuteritage (dans certains cas toujours)

Meacutethodologiquement il faut se concentrer agrave chaque phase sur ce qui est important donc au moment du MCD on traduit les besoins on repegravere les contraintes explicites (cleacute uniciteacute non nulliteacute) sans se preacuteoccuper de ce qui sera rendu neacutecessaire par la suite par la modeacutelisation relationnelle (les cleacutes eacutetrangegraveres par exemple) ou limpleacutementation (loptimisation par exemple) Agrave chaque jour suffit sa peine Peacutedagogiquement enfin les deacutebutants ont tendance (agrave cause des environnements de conception graphique comme phpMyAdmin notamment) agrave systeacutematiser les cleacutes artificielles en SQL (on pourrait en discuter) mais eacutegalement agrave ne pas faire le travail de recherche des cleacutes naturelles (au niveau relationnel notamment ce qui est une faute de modeacutelisation) Donc au plus tard on fait intervenir les cleacutes artificielles au plus on a une chance de penser aux cleacutes naturelles

Soit le modegravele relationnel suivant

1 Etu (id numEtu) avec numEtu cleacute 2 UV (id codeUv) avec codeUv cleacute3 Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

La question qui permet dafficher la liste des eacutetudiants (numEtu) avec leurs UVs (codeUv) neacutecessite une jointure des cleacutes artificielles Un modegravele sans ces cleacutes artificielles aurait eacuteteacute plus performant pour agrave causereacutepondre agrave cette question puisque toutes les informations se trouvent dans la relation Inscriptions

1 Etu (numEtu) 2 UV (codeUv) 3 Inscriptions (uv=gtUV etu=gtEtu)

Ne soyez pas systeacutematiqueIl est en effet freacutequent dans un projet reacuteel dadopter des cleacutes artificielles presque systeacutematiquement vous pourrez le faire en connaissance de cause quand vous aurez bien compris pourquoi cest inteacuteressant et quand ccedila ne lest pasLes cleacutes artificielles sont inteacuteressantes pour autre chose que les performances (leacutevolutiviteacute par exemple choisissez-les quand vous savez pourquoi)Les cleacutes artificielles ne dispensent pas de rechercher les cleacutes naturelles Les cleacutes artificielles ne sont pas la seule faccedilon doptimiser une base de donneacutees (indexation deacutenormalisation)

53 Bibliographie commenteacutee sur la modeacutelisation UML

Il existe de nombreux outils de modeacutelisation UML On pourra citer

logiciel Open Source et multi-plateformes facile dusage (qui marche neacuteanmoins mieux sur Linux Dia

que sur Windows)

(version gratuite)Objecteering

Cleacutes artificielles et optimisation est-il toujours plus performant dutiliser des cleacutes artificielles

Conseil

Compleacutement Outils de modeacutelisation UML

Etu (id numEtu) avec numEtu cleacute

UV (id codeUv) avec codeUv cleacute

Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

Etu (numEtu)

UV (codeUv)

Inscriptions (uv=gtUV etu=gtEtu)

Bibliographie commenteacutee sur la modeacutelisation UML

28

- - - - - -

- - - - - -

Agrave voir eacutegalement en Open Source ou (non testeacute par lauteur)ArgoUML EclipseUML

UML2 en action

Pour un aperccedilu plus deacutetailleacute des possibiliteacutes dexpression du diagramme de classe UML lire le chapitre 7 Deacuteveloppement du modegravele statique (pages 133 agrave 163)

On pourra notamment y trouver

Lassociation dagreacutegationLes proprieacuteteacutes dassociationLexpression de rocircles dans les associationsLes attributs de classeLes qualificatifsLes opeacuterations (ou meacutethodes)

Le chapitre donne de plus des conseils meacutethodologiques pour la conception (voir en particulier la synthegravese page 163)

On pourra eacutegalement y trouver

Des principes de choix de modeacutelisation entre attributs et classes et sur la segmentation des classesDes principes de seacutelection des attributs (redondance avec les associations avec les classes etc)Des principes de seacutelection des associationsDes principes de choix de cardinaliteacute (notamment pour la gestion dhistorisation)Des principes de seacutelection des relations de geacuteneacuteralisation (heacuteritage)Des principes dintroduction de meacutetaclasses (type)s

U M L e n Franccedilais

Une tregraves bonne reacutefeacuterence en ligne sur la modeacutelisation UML avec des cours des liens vers la norme etc

Le contenu deacutepasse tregraves largement lusage dUML pour la modeacutelisation de BD (et ne fait dailleurs pas de reacutefeacuterence preacutecise agrave ce sous-ensemble particulier)

On pourra consulter en particulier le chapitre sur les diagrammes de classe httpumlfreefrcoursi-p14html

UML en 5 eacutetapes

On consultera en particulier le tutoriel sur les diagrammes de classe httpdeveloppeurjournaldunetcomtutorielcpt010607cpt_umlintroshtml

Cinq petits conseils pour un scheacutema UML efficace

Compleacutement Modeacutelisation UML

Compleacutement Reacutefeacuterence UML en ligne

Compleacutement Tutoriel sur la modeacutelisation UML

Compleacutement Conseils

Synthegravese Les diagrammes de modeacutelisation conceptuelle

29

-

-

- -

-

- -

-

-

- -

-

- - - -

-

-

(chapitre 3)UML2 par la pratique

Des explications exemples et eacutetudes de cas

54 Synthegravese Les diagrammes de modeacutelisation conceptuelle

Un modegravele conceptuel peut ecirctre repreacutesenteacute sous forme de diagramme E-A ou sous forme de diagramme de classe UML

Classe ou Entiteacute

Attribut ou Proprieacuteteacute

TypeacuteMulti-valueacuteComposeacuteDeacuteriveacute

Meacutethode

ParamegravetresValeur de retour

Association

Association

VerbeCardinaliteacute

Heacuteritage

Heacuteritage dattributsHeacuteritage de meacutethodes

Composition (ou entiteacute faible)

Cardinaliteacute

Compleacutement Pratique

Exercices

30

-

-

-

-

-

-

-

1 2

1

1 Exercice Lab III[20 min]

Description du problegraveme

Un laboratoire souhaite geacuterer les meacutedicaments quil conccediloit

Un meacutedicament est deacutecrit par un nom qui permet de lidentifier En effet il nexiste pas deux meacutedicaments avec le mecircme nom Un meacutedicament comporte une description courte en franccedilais ainsi quune description longue en latin On gegravere aussi le conditionnement du meacutedicament cest agrave dire le nombre de pilules par boicircte (qui est un nombre entier)Agrave chaque meacutedicament on associe une liste deacutedieacutee de contre-indications geacuteneacuteralement plusieurs parfois aucune Les contre-indications sont trieacutees par ordre dimportance Lordre est total est strict pour un meacutedicament donc chaque contre-indication possegravede une importance et il nexiste pas deux contre-indications associeacutees au mecircme meacutedicament avec la mecircme importanceTout meacutedicament possegravede au moins un composant souvent plusieurs Un composant est identifieacute par un code unique et possegravede un intituleacute Tout composant peut intervenir dans la fabrication de plusieurs meacutedicaments Il existe des composants qui ne sont pas utiliseacutes pour fabriquer des meacutedicaments et que lon veut quand mecircme geacuterer

Donneacutees de test

Afin de mateacuterialiser notre base de donneacutees nous obtenons les descriptions suivantes

Le a pour description courte et pour description longue Chourix Meacutedicament contre la chute des chouxlaquo raquoVivamus fermentum semper porta Nunc diam velit adipiscing ut tristique vitae sagittis vel odio laquo

Il est conditionneacute en boicircte de 13Maecenas convallis ullamcorper ultricies Curabitur ornare raquoSes contre-indications sont

Le Chourix ne doit jamais ecirctre pris apregraves minuitLe Chourix ne doit jamais ecirctre mis au contact avec de leau

Ses composants sont le et le HG79 SN50Le a pour description courte et pour Tropas Meacutedicament contre les dysfonctionnements intellectuelslaquo raquodescription longue Suspendisse lectus leo consectetur in tempor sit amet placerat quis neque Etiam laquo

Il est conditionneacute en boicircte de 42luctus porttitor lorem sed suscipit est rutrum non raquoSes contre-indications sont

Le Tropas doit ecirctre gardeacute agrave labri de la lumiegravere du soleil

Son unique composant est le HG79Les composants existants sont

HG79 Vif-argent alleacutegeacute

ExercicesII

Exercice Eacutetudiants et UVs (introduction)

31

- - -

- - HG81 Vif-argent alourdi

SN50 Pur eacutetain

Question 1

Question 2

Question 3

2 Exercice Eacutetudiants et UVs (introduction)[20 min]

On dispose du scheacutema UML ci-apregraves qui deacutecrit des eacutetudiants des UV les notes obtenues par les eacutetudiants agrave ces UV et les diplocircmes dorigine de ces eacutetudiants

Eacutetudiants et UVs

key deacutesigne des cleacutes candidates ici toutes les cleacutes ne sont composeacutees que dun seul attributlocal key deacutesigne une cleacute localeun semestre est de la forme PYYYY ou AYYYY (ougrave YYYY deacutesigneacute une anneacutee sur 4 chiffre) exemple A2013 P2014

Rappel Notion de cleacute locale dans classes dassociation (cf p49)

Effectuez le modegravele conceptuel en UML de ce problegraveme

Indices

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans deacutedieacuteeles donneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition

[ ]solution ndeg4 [ ] p56

En mobilisant les regravegles adeacutequates proposer un modegravele logique de donneacutees correspondant en relationnel Le repeacuterage des domaines et des cleacutes est obligatoire

[ ]solution ndeg5 [ ] p57

Dessiner des tableaux remplis avec les donneacutees fournies en exemple afin de montrer que le modegravele fonctionne selon le besoin exprimeacute initialement On pourra mettre le premier mot seulement des descriptions pour gagner du temps

[ ]solution ndeg6 [ ] p57

Exercice Super-heacuteros relationnels I

32

-

-

Question

3 Exercice Super-heacuteros relationnels I[20 min]

La gamme de super-heacuteros GARVEL veut reacutealiser la base de donneacutees de leurs figurines articuleacutees La socieacuteteacute a fait reacutealiser un modegravele UML qui doit servir de point de deacutepart agrave la mise en œuvre

Modegravele UML Figurines GARVEL

Question

4 Exercice Objets Numeacuteriques Libres[30 min]

Lassociation ONL (Objets Numeacuteriques Libres) est une association de promotion des logiciels libres Elle souhaite exposer sur un site Internet une liste de logiciels libres Ce site sera adosseacute agrave une base de donneacutees relationnelle ou relationnel-objet La premiegravere eacutetape de sa deacutemarche est de reacutealiser un modegravele conceptuel repreacutesentant ce quelle souhaite faire

La base de donneacutees permet de geacuterer des applicationsLes applications sont identifieacutees par leur nom (LibreOffice Gimp) et leur version (10 21) et comportent une description courte et une URL Tous les attributs sont obligatoires Chaque application a une URL uniqueLa base de donneacutees permet de geacuterer des librairies

Traduire le scheacutema en modegravele logique relationnel ( )MLD1

On choisira obligatoirement les cleacutes primaires parmi celles neacutecessitant le plus petit nombre de bits possible pour leur codage

[ ]solution ndeg7 [ ] p57

Transformer le modegravele UML en modegravele relationnel (justifier les passages non triviaux en particulier la relation dheacuteritage)

[ ]solution ndeg8 [ ] p58

Exercice Objets Numeacuteriques Libres

33

-

-

-

-

-

-

-

-

-

-

-

-

Les librairies sont des logiciels mais pas des applications Elles ont les mecircmes attributs que les applications (nom version description courte URL) mais les URL ne sont pas neacutecessairement uniques Les applications peuvent deacutependre de librairies ou dautres applications et les librairies peuvent deacutependre dautres librairies (mais pas dune application)La base de donneacutees permet de geacuterer des composantsLes composants sont inteacutegreacutes agrave une application ou librairie Les composants ont un code interne agrave lapplication ou la librairie quil servent une version et une description courte et une URL Le code et le numeacutero de version permettent didentifier localement le composant au sein de la librairie ou de lapplication la description courte et lURL sont optionnellesLa base de donneacutees permet de geacuterer des licencesLes applications librairies et composants sont attacheacutes agrave une ou plusieurs licences identifieacutees par leur nom (GPL MPL) leur version et leur langue et comportant le texte inteacutegral de la licence Les versions des logiciels et licences sont de type numeacutero de licence majeur point numeacutero de licence mineur comme 10 ou 22La base de donneacutees permet de geacuterer des cateacutegoriesChaque logiciel est rangeacute dans une cateacutegorie principale et plusieurs cateacutegories secondaires Exemple de cateacutegories bureautique dessin multimeacutedia physique

Exemple (factice) de donneacutees

Applications

Scenari 41 une chaicircne eacuteditoriale XML httpscenariorg deacutepend de Libreoffice 43 et de ImageMagick 68Libreoffice 43 une suite bureautique WYSIWYG httplibreofficeorg

Librairie

ImageMagick 68 permet de creacuteer de convertir de modifier et dafficher des images http imagemagickorg

Composant

impng 02 est un composant de ImageMagick 68 permet de compresser une image au format PNG

Toutes ces applications librairies et composants sont disponibles sous une licence LGPL 30 et GPL 30 franccedilaisesToutes ces applications et librairies sont rangeacutees dans la cateacutegorie principale document Scenari est rangeacute dans la cateacutegorie secondaire Eacutedition WYSIWYM Libreoffice dans la cateacutegorie secondaire Bureautique ImageMagick dans la cateacutegorie secondaire Multimeacutedia

Question

Reacutealiser un MCD en UML[ ]solution ndeg9 [ ] p58

Devoirs

34

1 Exercice Arbre de scegravene 3D[30 minutes]

On souhaite pouvoir geacuterer les diffeacuterents eacuteleacutements composant des scegravenes 3D dans une base de donneacutees Une scegravene contient des objets qui eux-mecircmes peuvent appartenir agrave plusieurs scegravenes (au moins une) mais il ne peut y avoir plusieurs fois le mecircme objet dans une mecircme scegravene Dans chaque scegravene les objets peuvent ecirctre visibles ou invisibles Les scegravenes et les objets sont identifieacutes de maniegravere unique par un nom Une scegravene peut ecirctre active ou inactive Un objet a comme proprieacuteteacute une position dans lespace repreacutesenteacutee par un vecteur de reacuteels agrave trois composantes (x y z) Les objets sont organiseacutes de maniegravere hieacuterarchique un objet peut ecirctre parent de plusieurs objets et chaque objet peut avoir au plus un parent Des scripts peuvent ecirctre associeacutes agrave un objet ou agrave une scegravene (agrave lun ou agrave lautre mais pas aux deux) Un script est identifieacute de maniegravere unique par un nom et possegravede eacutegalement un attribut permettant de connaicirctre son eacutetat (actif ou inactif) Un personnage est un objet particulier qui possegravede des animations Une animation est relative agrave un personnage et est identifieacutee de maniegravere locale par un nom Agrave un objet est associeacute un maillage et celui-ci peut ecirctre utiliseacute par plusieurs objets Un maillage est identifieacute de maniegravere unique par un nom et est composeacute de plusieurs eacuteleacutements Chaque eacuteleacutement est relatif agrave un maillage et est identifieacute de maniegravere locale par un numeacutero Il existe exactement trois types deacuteleacutement des nœuds des arrecirctes et des faces Une face est deacutelimiteacutee par trois arrecirctes et chaque arrecircte est deacutelimiteacutee par deux nœuds Plusieurs arrecirctes peuvent partager un mecircme nœud et plusieurs faces peuvent partager une mecircme arrecircte Afin deacutevaluer la complexiteacute dune scegravene on souhaite pouvoir calculer le nombre de faces afficheacutees pour une scegravene donneacutee (cest-agrave-dire la somme du nombre de faces du maillage associeacute aux objets visibles de la scegravene) Un maillage possegravede plusieurs mateacuteriaux identifieacutes de maniegravere unique par un nom Un mateacuteriau peut ecirctre associeacute agrave plusieurs maillages Un mateacuteriau est caracteacuteriseacute par une couleur deacutefinie par un vecteur dentiers agrave quatre composantes rouge vert bleu alpha Un mateacuteriau peut posseacuteder une texture et celle-ci peut ecirctre utiliseacutee par plusieurs mateacuteriaux Une texture est identifieacutee de maniegravere unique par un nom et possegravede comme attribut une image

Question 1

Question 2

DevoirsIII

Proposez une clarification de ce problegraveme On pourra reclasser les informations par grande cateacutegorie scegravene objets scripts

Eacutetablissez un modegravele conceptuel en UML de ce problegraveme

Compleacutement Exercices de modeacutelisation suppleacutementaire

35

1 Exercice Appartements agrave louer[30 min]

Une agence dimmobilier (ventes et locations) veut geacuterer son parc dappartements dans une base de donneacutees Chaque appartement possegravede plusieurs piegraveces qui peuvent ecirctre des piegraveces dhabitation des piegraveces de rangement ou des commoditeacutes

Chaque piegravece a une superficie un nombre de prises eacutelectriques et des meubles Pour ces derniers on veut enregistrer le nom du modegravele et le type (chaise lit four etc) Rien nempecircche quune piegravece comporte plusieurs meubles identiques (par exemple plusieurs chaises PIN IQUEA) Les piegraveces dhabitation ont une ou plusieurs fenecirctres les piegraveces de rangement ont une ou plusieurs eacutetagegraveres et une surface de rangement utile totale On veut aussi savoir dans quelles piegraveces de rangement se situent les tableaux eacutelectriques de lappartement Finalement les piegraveces commoditeacutes peuvent ecirctre de trois types cuisine toilette ou salle de bain

Lagence veut aussi enregistrer les portes entre les diffeacuterentes piegraveces Une porte peut ecirctre agrave simple battant double battant coulissante ou une simple ouverture

Chaque appartement a une adresse une superficie totale (qui est la somme des superficies des piegraveces) et un type qui est la lettre T suivie du nombre de piegraveces dhabitation de lappartement Pour un appartement donneacute chaque piegravece est identifieacutee par un numeacutero (commenccedilant au numeacutero 1)

Lagence veut eacutegalement enregistrer le quartier ougrave se trouve lappartement auquel est lieacute un prix par megravetre carreacute Finalement elle veut garder un historique de lhistoire de lappartement les peacuteriodes pour lesquelles il est libre occupeacute en travaux ou vendu

Question

2 Exercice Objectifs[40 min]

Vous prenez la preacutesidence de lassociation Objectifs dont lobjet est daider ses eacutetudiants membres agrave mener des projets dans le cadre de leurs eacutetudes

Compleacutement Exercices de modeacutelisation suppleacutementaire

IV

Reacutealisez le diagramme UML reacutepondant aux besoins de cette agence[ ]solution ndeg10 [ ] p59

Exercice Objectifs

36

- - -

-

-

- - -

Vous constatez en arrivant dans lassociation que personne ne sait exactement quels sont les projets en cours ni qui fait quoi dans les projets Vous ne parvenez pas non plus agrave obtenir une liste exacte des partenaires sur lesquels lassociation peut compter La seule chose sur laquelle vous parvenez agrave mettre la main est un fichier tableur vaguement agrave jour

Vous deacutecidez quil est plus que temps de mettre en place une base de donneacutees afin dassurer la bonne gestion des informations les plus importantes pour lassociation Vous vous attachez pour cela agrave reacutealiser une analyse des besoins

Analysez les documents ci-apregraves

Etat des projets

Eacutetat des projets de lassociation Objectifs

Recueil de besoins

Agrave partir de leacutetude du fonctionnement actuel de lassociation vous relevez les choses importantes agrave geacuterer suivantes

Les membres de lassociation geacuteneacuteralement identifieacutes par leur preacutenomLes projets geacutereacutes par lassociation avec des dates de deacutebut et de fin preacutecises et un chef de projetLe deacutetail des tacircches de chaque projet avec leurs dates de deacutebut et de fin aussi et la liste de tous les membres qui y participentLa liste des partenaires des projets avec leur rocircle preacutecis pour chacun des projets auxquels ils participent

Afin de mieux geacuterer les attributions des projets il serait eacutegalement inteacuteressant de creacuteer une liste des speacutecialiteacutes correspondant agrave ce qui ce fait dans lassociation et daffecter une speacutecialiteacute agrave chaque membre ainsi quune agrave chaque projet pour voir si ce sont bien les membres les mieux adapteacutes qui travaille sur les projets

Recueil de donneacutees

Les discussions avec les anciens membres de lassociation vous apprennent les choses suivantes

Lassociation a termineacute de geacuterer les trois projets Comeacutedie Musicale geacutereacutee par Nathalie sur les trois premiers mois du semestre dautomne 1001 Science en fecircte geacutereacutee par Pierre sur tout le semestre de printemps 1003 et Nuit du picolo geacutereacutee par Julien en novembre 1001Les speacutecialiteacutes recenseacutees pour le moment sont Ville Universiteacute Sport Entreprise Culture InternationalIl faut au moins dix membres agrave lassociation (sinon elle ferme) recruter ceux qui manquentAidez lassociation agrave diviser ses projets en tacircches

Exercice Objectifs

37

- Les partenaires suivants aident ou ont aideacute lassociation la mairie pour la comeacutedie musicale et la science en fecircte qui apporte un soutien financier le ministegravere de la culture qui apporte son soutien logistique agrave la science en fecircte lassociation des commerccedilants de la ville qui apporte son soutien publicitaire agrave la comeacutedie musicale 1664 qui offre ses biegraveres agrave moitieacute prix pour la nuit du Picolo

Question 1

Question 2

Question 3

Afin de preacuteparer une analyse des besoins sommaire listez les donneacutees que vous devrez geacuterer agrave laide des documents et recueils de discussion agrave votre disposition Faites des hypothegraveses lorsque les donneacutees sont incomplegravetes ou incoheacuterentes

[ ]solution ndeg11 [ ] p59

Reacutealiser le MCD en UML et en E-A agrave partir des donneacutees preacutepareacutees dans la question preacuteceacutedente[ ]solution ndeg12 [ ] p60

Reacutealiser le MLD en relationnel en traduisant votre MCD[ ]solution ndeg13 [ ] p61

Contenus annexes

38Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

- - -

gt Attributs

Un attribut est une information eacuteleacutementaire qui caracteacuterise une classe et dont la valeur deacutepend de lobjet instancieacute

Le domaine des valeurs que peut prendre lattribut est fixeacute a prioriUn attribut est typeacute

Il peut prendre plusieurs valeurs distinctes dans son domaineUn attribut peut ecirctre multivalueacute Sa valeur alors est une fonction sur dautres attributs de la classeUn attribut peut ecirctre deacuteriveacute

(ou composite) Il joue alors le rocircle dun groupe dattributs (par Un attribut peut ecirctre composeacuteexemple une adresse peut ecirctre un attribut composeacute des attributs numeacutero type de voie nom de la voie) Cette notion renvoie agrave la notion de variable de type dans les langages de Record

programmation classiques

En UML on preacutefegravere lusage de meacutethodes aux attributs deacuteriveacutes On utilisera toujours des meacutethodes degraves que la valeur de lattribut deacuteriveacute deacutepend dautres attributs exteacuterieurs agrave sa classeEn UML on preacutefegravere lusage de compositions aux attributs composeacutes On utilisera toujours des compositions pour les attributs composeacutes et multivalueacutes

1 attributtype2 attribut_multivalueacute[nbMinValeursnbMaxValeurs]type3 attribut_deacuteriveacutetype4 attribut_composeacute5   - sous-attribut1type6   - sous-attribut2type7   -

Contenus annexes

Deacutefinition Attribut

Attention On utilise peu les attributs deacuteriveacutes et composeacutes en UML

Syntaxe

attributtype

attribut_multivalueacute[nbMinValeursnbMaxValeurs]type

attribut_deacuteriveacutetype

attribut_composeacute

  - sous-attribut1type

  - sous-attribut2type

  -

Contenus annexes

39Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Repreacutesentation dattributs en UML

Dans cet exemple les attributs Nom Preacutenom sont de type lun de 20 caractegraveres et lautre de 10 stringtandis que DateNaissance est de type et Age de type Preacutenom est un attribut multivalueacute ici date integerune personne peut avoir de 1 agrave 3 preacutenoms Age est un attribut deacuteriveacute il est calculeacute par une fonction sur DateNaissance

Meacutethodes (cf p39)

Composition (cf p5)

gt Meacutethodes

Une meacutethode (ou opeacuteration) est une fonction associeacutee agrave une classe dobjet qui permet dagir sur les objets de la classe ou qui permet agrave ces objets de renvoyer des valeurs (calculeacutees en fonction de paramegravetres)

1 methode(paramegravetres)type

Pour la modeacutelisation des bases de donneacutees les meacutethodes sont surtout utiliseacutees pour repreacutesenter des donneacutees calculeacutees (agrave linstar des attributs deacuteriveacutees) ou pour mettre en exergue des fonctions importantes du systegraveme cible Seules les meacutethodes les plus importantes sont repreacutesenteacutees lapproche est moins systeacutematique quen modeacutelisation objet par exemple

Lors de la transformation du modegravele conceptuel UML en modegravele logique relationnel les meacutethodes ne Leur repeacuterage au niveau conceptuel sert donc surtout daide-seront geacuteneacuteralement pas impleacutementeacutees

meacutemoire pour limpleacutementation au niveau applicatif

Exemple La classe Personne

Compleacutement Voir aussi

Deacutefinition Meacutethode

Syntaxe

Remarque Meacutethodes et modeacutelisation de BD

Remarque Meacutethodes relationnel relationnel-objet

methode(paramegravetres)type

Contenus annexes

40Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Au contraire un modegravele logique relationnel-objet permettra limpleacutementation de meacutethodes directement associeacutees agrave des tables Leur repeacuterage au niveau conceptuel est donc encore plus important

Transformation des meacutethodes par des vues (cf p40)

gt Transformation des meacutethodes par des vues

Lorsquune meacutethode est speacutecifieacutee sur un diagramme UML pour une classe C si cette meacutethode est une fonction relationnelle (elle renvoie une unique valeur et elle peut ecirctre reacutesolue par une requecircte SQL) alors on creacutee une vue qui reprend les attributs de la classe C et ajoute des colonnes calculeacutees pour les meacutethodes

Les attributs deacuteriveacutes eacutetant apparenteacutes agrave des meacutethodes ils peuvent eacutegalement ecirctre geacutereacutes par des vues

gt Classe dassociation

On utilise la notation des classes dassociation lorsque lon souhaite ajouter des proprieacuteteacutes agrave une association

Notation dune classe dassociation en UML

On reacuteserve en geacuteneacuteral les classes dassociation aux associations NM

Il est toujours possible de reacuteduire une classe dassociation sur une association 1N en migrant ses attributs sur la classe cocircteacute N et cest en geacuteneacuteral plus lisible ainsi

Compleacutement

Meacutethode

Remarque Attributs deacuteriveacutes

Deacutefinition Classe dassociation

Syntaxe Notation dune classe dassociation en UML

Meacutethode

Contenus annexes

41Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

-

Emplois

Selon le standard UML une classe dassociation est une classe et agrave ce titre elle peut ecirctre mobiliseacutee dans dautres associations ou dans des heacuteritages Nous deacuteconseillons neacuteanmoins ces notations qui ont tendance agrave complexifier la lecture et la transformation du diagramme

Nous conseillons donc de ne jamais associer une classe dassociation

gt Transformation des attributs

Pour chaque attribut eacuteleacutementaire et monovalueacute dune classe

on creacutee un attribut correspondant

Attribut

Classe1(ab)

Pour chaque attribut composite comprenant N sous-attributs dune classe

on creacutee N attributs correspondantsdont les noms sont la concateacutenation du nom de lattribut composite avec celui du sous-attribut

Exemple Exemple de classe dassociation

Conseil

Meacutethode Attributs simples

Meacutethode Attributs composites

Contenus annexes

42Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- - - -

Attribut composeacute

Classe1(ab_b1b_b2)

Pour chaque attribut multivalueacute b dune classe C

on creacutee une nouvelle relation RBqui comprend un attribut monovalueacute correspondant agrave bplus la cleacute de la relation repreacutesentant C la cleacute de RB est la concateacutenation des deux attributs

Attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Dans le cas ougrave le nombre maximum de est fini et petit on peut eacutegalement adopter la transformation b

suivante Classe1(ab1b2b3b4b5b6b7b8b9b10)

Si le nombre dattributs est infini ( ) cest impossible sil est trop grand ce nest pas souhaitableb[1]

On combine les regravegles eacutenonceacutees pour les attributs composeacutes et pour les attributs multivalueacutes

Attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Transformation des compositions (cf p42)

Meacutethode Attributs multivalueacutes

Meacutethode Attributs multivalueacutes (meacutethode alternative)

Meacutethode Attributs composeacutes multivalueacutes

Rappel Voir aussi

Contenus annexes

43Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

gt Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Compleacutement Attributs multivalueacutes et composeacutes

Contenus annexes

44Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

Rappel Voir aussi

Rappel

Meacutethode

Contenus annexes

45Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p48)

gt Transformation des associations 1N

Pour chaque association binaire de type 1N

on ajoute agrave la relation cocircteacute N une cleacute eacutetrangegravere vers la relation cocircteacute 1

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Meacutethode

Contenus annexes

46Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Association 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Contrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p46)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

R1

Compleacutement

Rappel

Meacutethode

Contenus annexes

47Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p47)

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Deacutefinition Projection

Contenus annexes

48Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Deacutefinition Projection

Contenus annexes

49Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Transformation des classes dassociation

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de lassociation NM

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Meacutethode Classe dassociation NM

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Transformation des classes dassociation avec cleacute locale

14

- -

Agreacutegation NM

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2)

24 Transformation des classes dassociation avec cleacute locale

Les attributs de la classe dassociation

sont ajouteacutes agrave la relation issue de lassociation NM la cleacute locale de la classe dassociation est concateacuteneacutee aux cleacutes eacutetrangegraveres composant deacutejagrave la cleacute primaire de la relation dassociation

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Meacutethode Classe dassociation NM

Exercice

15

25 Correspondance entre UML et relationnel

Passsage UML vers Relationnel

Exercice

16

26 ExerciceQuel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

[ ]solution ndeg2 [ ] p53

Exercice

17

27 ExerciceSoit le scheacutema UML suivant

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

[ ]solution ndeg3 [ ] p54

Modeacutelisation avanceacutee des associations 11 en relationnel

18

-

- -

-

-

3 Modeacutelisation avanceacutee des associations 11 en relationnelObjectifs

Savoir faire le passage dun scheacutema conceptuel UML agrave un scheacutema relationnel

Connaicirctre les choix possibles pour le cas de lassociation 11 et savoir faire le meilleur choix

Il existe des formulations conceptuelles en UML qui sont plus deacutelicates agrave traduire au niveau logique en relationnel comme lassociation 11 Ces cas requiegraverent un choix eacuteclaireacute de la part du concepteur

31 Transformation des associations 11 (approche geacuteneacuterale)

Il existe deux solutions pour transformer une association 11

Avec deux relations on traite lassociation 11 comme une association 1N puis lon ajoute une contrainte UNIQUE sur la cleacute eacutetrangegravere pour limiter la cardinaliteacute maximale agrave 1 Avec une seule relation on fusionne les deux classes en une seule relation

Association 11

Une des deux relations est choisie pour porter la cleacute eacutetrangegravere on ajoute les contraintes ou (cleacute candidate) sur la cleacute eacutetrangegravere et si neacutecessaire une UNIQUE KEY

contrainte imposant linstanciation simultaneacutee des deux relations

Classe1(abc=gtClasse2) avec c UNIQUE ou KEY

Classe2(cd)

ou

Classe1(ab)

Classe2(cda=gtClasse1) avec a UNIQUE ou KEY

On creacuteeacute une seule relation contenant lensemble des attributs des deux classes

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Meacutethode Avec deux relations (cleacute eacutetrangegravere)

Meacutethode Avec une relation (fusion)

Transformation des associations 1111

19

- -

- - - - - -

- on choisit une cleacute parmi les cleacutes candidates

Classe12(abcd) avec c UNIQUE ou KEY

ou

Classe21(cdab) avec a UNIQUE ou KEY

Ce choix entre les deux meacutethodes sera conduit par une appreacuteciation du rapport entre

La complexiteacute introduite par le fait davoir deux relations lagrave ou une suffitLa pertinence de la seacuteparation des deux relations dun point de vue seacutemantiqueLes pertes de performance dues agrave leacuteclatement des relationsLes pertes de performance dues au fait davoir une grande relationLes questions de seacutecuriteacute et de sucircreteacute factoriseacutees ou non au niveau des deux relations

Dans le cas dune association 1111 il faudra ajouter une contrainte compleacutementaire

Transformation des associations 1111 (cf p19)

32 Transformation des associations 1111

Le plus souvent cest meacutethode par des relations qui est la plus adapteacutee agrave ce casfusionLorsquelle ne lest pas et que lon choisit deux relations il faut ajouter une contrainte dynamique qui controcirclera que les deux relations sont bien toujours instancieacutees ensembles Notons que la cleacute eacutetrangegravere peut ecirctre choisie comme cleacute primaire

Association 11

Classe12(abcd) avec c KEY

ou

Classe21(cdab) avec a KEY

ou

Classe1(abc=gtClasse2) avec c KEY

Classe2(cd)

Contrainte PROJECTION(Classe1c) = PROJECTION(Classe2c)

ou

Classe1(ab)

Remarque Fusion des relations dans le cas de la traduction de lassociation 11

Compleacutement

Meacutethode Association 1111

Transformation des associations 0111

20

-

-

-

-

Classe2(cda=gtClasse1) avec a KEY

Contrainte PROJECTION(Classe1a) = PROJECTION(Classe2a)

La contrainte dynamique exprimeacutee ici suit le mecircme principe que pour les association 1NContrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p44)

33 Transformation des associations 0111

Le plus souvent cest la meacutethode par les deux relations qui est la plus adapteacutee on choisira toujours la relation cocircteacute 01 pour ecirctre reacutefeacuterenccedilante

Il est possible dutiliser la fusion dans ce cas les cleacutes cocircteacute 01 deviennent des attributs il ne UNIQUE

peuvent plus ecirctre cleacutes pouvant ecirctre NULL

Association 011

Classe1(abc=gtClasse2) avec c KEY

Classe2(cd)

ou

Classe12(cdab) avec a UNIQUE

34 Transformation des associations 0101

On choisit la solution avec deux relations dun cocircteacute ou de lautre la cleacute eacutetrangegravere est associeacute agrave la contrainte ce nest pas une cleacute car elle peut ecirctre nulleUNIQUE

Il nest pas souhaitable de choisir la fusion lune des deux relations pouvant ecirctre nulle on ne pourrait plus trouver de cleacute naturelle

Association 0101

Classe1(abc=gtClasse2) avec c UNIQUE

Classe2(cd)

ou

Compleacutement Contrainte dynamique

Meacutethode Association 0111

Meacutethode Association 0101

Exemple de choix pour une relation 11

21

-

- -

-

-

Classe1(ab)

Classe2(cda=gtClasse1) avec a UNIQUE

35 Exemple de choix pour une relation 11

Soit deux entiteacutes homme et femme et une association mariage de cardinaliteacute 1111 entre ces deux entiteacutes (hommes et femmes sont donc obligatoirement marieacutes)Les entiteacutes homme et femme sont identifieacutees par un attribut nom (dans ce modegravele chaque personne a un nom unique on pourrait remplacer le nom par un identifiant comme le numeacutero de seacutecuriteacute social ou par une cleacute artificielle pour ecirctre plus proche de la reacutealiteacute)

Bien que de type 1111 le choix de la fusion nest pas tregraves opportun car il sagit bien dobjets distincts que lon veut modeacuteliser

On choisira donc plutocirct la repreacutesentation avec deux relationsLa cleacute eacutetrangegravere pourra ecirctre du cocircteacute homme ou femme mecircme si la pratique dominante nous incite agrave la mettre du cocircteacute femmeOn pourra eacutegalement deacutecider de prendre la cleacute eacutetrangegravere comme cleacute primaire

1 homme (nom)2 femme (mariage=gthomme nom) avec nom KEY3 Contrainte PROJ(hommenom) = PROJ(femmemariage)

Si lassociation avait eacuteteacute de cardinaliteacute 0101 (certains hommes et femmes ne sont pas marieacutes) un choix similaire se serait imposeacute avec limpossibiliteacute de choisir la cleacute eacutetrangegravere comme cleacute primaire celle-ci pouvant ecirctre nulle et neacutetant donc plus candidate

1 homme (nom)2 femme (nom mariage=gthomme) avec mariage UNIQUE

4 Autres eacuteleacutements utiles en UML packages et steacutereacuteotypesObjectifs

Maicirctriser le diagramme de classe UML dans le cas de la conception de BD

41 Paquetages

Les paquetages (plus communeacutement appeleacutes ) sont des eacuteleacutements servant agrave organiser un modegravelepackage

Ils sont particuliegraverement utiles degraves que le modegravele comporte de nombreuses classes et que celles-ci peuvent ecirctre trieacutees selon plusieurs aspects structurants

Exemple

Exemple

Deacutefinition Package

homme (nom)

femme (mariage=gthomme nom) avec nom KEY

Contrainte PROJ(hommenom) = PROJ(femmemariage)

homme (nom)

femme (nom mariage=gthomme) avec mariage UNIQUE

Steacutereacuteotype

22

Notation des paquetages en UML

Exemple dutilisation des packages

On repreacutesente chaque classe au sein dun Il est alors possible de faire une preacutesentation globale du packagemodegravele (tous les ) partielle (une partie des ) ou centreacutee sur un seul packages packages package

Pour une repreacutesentation partielle ou centreacutee sur un on repreacutesente les concerneacutes avec leurs package packagesclasses propres ainsi que toutes les classes lieacutees des autres packages (et seulement celles-ci)

Preacutesentation partielle du modegravele centreacutee sur un package

Syntaxe

Exemple

Meacutethode

Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt

23

42 Steacutereacuteotype

Un steacutereacuteotype UML est une syntaxe permettant dajouter de la seacutemantique agrave la modeacutelisation des classes Il permet de deacutefinir des afin de regrouper conceptuellement un ensemble de classes (agrave linstar types de classedune classe qui permet de regrouper conceptuellement un ensemble dobjets)

Cest une meacutecanique de meacuteta-modeacutelisation elle permet deacutetendre le meacuteta-modegravele UML cest agrave dire le modegravele conceptuel du modegravele conceptuel

Un meacuteta-modegravele est le modegravele dun modegravele Par exemple le meacuteta-modegravele UML comprend les concepts de classe attribut association cardinaliteacute composition agreacutegation contraintes annotations On mobilise ces concepts (on les instancie) pour exprimer un modegravele particulier suivant le formalisme UML

Les steacutereacuteotypes permettent donc dajouter au meacuteta-modegravele UML standard celui que tout le monde utilise des concepts locaux pour enrichir le langage de modeacutelisation que lon utilise pour reacutealiser des modegraveles

Notation dun steacutereacuteotype en UML

Un steacutereacuteotype speacutecifique enrichit le meacuteta-modegravele UML mais selon une seacutemantique qui est propre agrave celui qui la poseacute non standard donc La conseacutequence est que pour un tiers linterpreacutetation du steacutereacuteotype nest plus normaliseacutee et sera potentiellement plus facilement erroneacutee Il convient donc de ne pas abuser de cette meacutecanique

Deux ou trois steacutereacuteotypes speacutecifiques correctement deacutefinis sont faciles agrave transmettre plusieurs dizaines repreacutesenteraient un nouveau langage complet agrave apprendre pour le lecteur du modegravele

Il existe des steacutereacuteotypes fournit en standard par UML ou communeacutement utiliseacutes par les modeacutelisateurs Lavantage est quil seront compris plus largement au mecircme titre que le reste du meacuteta-modegravele (ils ont une valeur de standard)

43 Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt

Deacutefinition Steacutereacuteotype UML

Deacutefinition Meacuteta-modegravele

Syntaxe

Conseil Steacutereacuteotypes speacutecifiques et steacutereacuteotypes standard

Syntaxe

Type utilisateurs steacutereacuteotype ltltdataTypegtgt

24

Steacutereacuteotype UML permettant dexprimer une eacutenumeacuteration

Exemple de modeacutelisation UML deacutenumeacuteration

44 Type utilisateurs steacutereacuteotype ltltdataTypegtgt

Les types utilisateurs permettent de deacutefinir des types complexes propres en extension des types primaires (entier chaicircne date)

Steacutereacuteotype dataType

Steacutereacuteotype dataType (exemple)

Cette modeacutelisation est eacutequivalente agrave la modeacutelisation des attributs composeacutes directement dans la classe principale Cest une repreacutesentation plus standard en UML

Exemple

Syntaxe

Exemple

Meacutethode Attributs composeacutes

Synthegravese sur la modalisation UML et relationnelle

25

Quelques eacuteleacutements de stylistique UML

26

-

- -

-

-

-

- - -

- - - -

1

2

3

5 Synthegravese sur la modalisation UML et relationnelle51 Quelques eacuteleacutements de stylistique UML

Toutes les associations doivent ecirctre nommeacutees (sauf composition heacuteritage agreacutegation)Ne pas utiliser de nom geacuteneacuterique pour les Classes comme Entiteacute Classe Objet TrucEacuteviter les noms geacuteneacuteriques pour les associations (comme est associeacute agrave)Attention au sens des compositions et agreacutegation le losange est cocircteacute ensemble et noubliez pas les cardinaliteacutes notamment cocircteacute parties

Nutilisez pas le souligneacute ni les en UML pour identifier les cleacutes preacutefeacuterez la contrainte keyPreacutefeacuterez lheacuteritage aux booleacuteens de typage en UMLLes attributs deacuteriveacutes sont reacuteserveacutes aux deacuterivations simples (des attributs de la mecircme classe) si cest plus complexe preacutefeacuterez des meacutethodes (et dans le doute preacutecisez les modes de calcul sur le scheacutema ou dans une note agrave part)Donnez des exemples de contenu lorsque ce nest pas eacutevident (lorsque le couple nom dattribut et type ne permet pas de faccedilon eacutevidente de comprendre de quoi lon parle)Inutile de deacuteclarer le type booleacuteen en UML utilisez-le directement comme un type de donneacutees connu

Si tous vos heacuteritages sont exclusifs notez-le agrave part pour alleacuteger votre scheacutema (et eacuteviter labondance de XOR)

52 Attention aux cleacutes artificielles

en UML on ne pose jamais de cleacutes artificiellesen relationnel on pose rarement des cleacute artificielles sauf dans le cas de cleacutes eacutetrangegraveres vraiment trop compliqueacuteesen SQL on peut poser des cleacutes artificielles si on a une bonne raison (ce nest donc pas systeacutematique et cest agrave justifier)

On najoutera pas de cleacute artificielle en UML au moment de la modeacutelisation conceptuelle des donneacutees

Formellement en UML la notion de cleacute nexiste pas (contrairement agrave l ) elle est ajouteacutee par les E-A

pratiquants des BD

Logiquement on a pas besoin de cette notion en UML les cleacutes artificielles servent en relationnel et dans certains cas uniquementPratiquement cela peut conduire agrave des situations absurdes (comme enlever au niveau logique des cleacutes artificielles ajouteacutees au niveau conceptuel)

Attention

Conseil

Compleacutement

Fondamental

Cleacutes artificielles et niveau conceptuel

Bibliographie commenteacutee sur la modeacutelisation UML

27

-

-

- -

-

- -

-

-

3

4

5

si on fait du non-relationnel on ne doit pas ajouter de cleacutes artificielles dans certains cas (limbrication typiquement) cela arrive mecircme en relationnel avec la transformation de lheacuteritage (dans certains cas toujours)

Meacutethodologiquement il faut se concentrer agrave chaque phase sur ce qui est important donc au moment du MCD on traduit les besoins on repegravere les contraintes explicites (cleacute uniciteacute non nulliteacute) sans se preacuteoccuper de ce qui sera rendu neacutecessaire par la suite par la modeacutelisation relationnelle (les cleacutes eacutetrangegraveres par exemple) ou limpleacutementation (loptimisation par exemple) Agrave chaque jour suffit sa peine Peacutedagogiquement enfin les deacutebutants ont tendance (agrave cause des environnements de conception graphique comme phpMyAdmin notamment) agrave systeacutematiser les cleacutes artificielles en SQL (on pourrait en discuter) mais eacutegalement agrave ne pas faire le travail de recherche des cleacutes naturelles (au niveau relationnel notamment ce qui est une faute de modeacutelisation) Donc au plus tard on fait intervenir les cleacutes artificielles au plus on a une chance de penser aux cleacutes naturelles

Soit le modegravele relationnel suivant

1 Etu (id numEtu) avec numEtu cleacute 2 UV (id codeUv) avec codeUv cleacute3 Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

La question qui permet dafficher la liste des eacutetudiants (numEtu) avec leurs UVs (codeUv) neacutecessite une jointure des cleacutes artificielles Un modegravele sans ces cleacutes artificielles aurait eacuteteacute plus performant pour agrave causereacutepondre agrave cette question puisque toutes les informations se trouvent dans la relation Inscriptions

1 Etu (numEtu) 2 UV (codeUv) 3 Inscriptions (uv=gtUV etu=gtEtu)

Ne soyez pas systeacutematiqueIl est en effet freacutequent dans un projet reacuteel dadopter des cleacutes artificielles presque systeacutematiquement vous pourrez le faire en connaissance de cause quand vous aurez bien compris pourquoi cest inteacuteressant et quand ccedila ne lest pasLes cleacutes artificielles sont inteacuteressantes pour autre chose que les performances (leacutevolutiviteacute par exemple choisissez-les quand vous savez pourquoi)Les cleacutes artificielles ne dispensent pas de rechercher les cleacutes naturelles Les cleacutes artificielles ne sont pas la seule faccedilon doptimiser une base de donneacutees (indexation deacutenormalisation)

53 Bibliographie commenteacutee sur la modeacutelisation UML

Il existe de nombreux outils de modeacutelisation UML On pourra citer

logiciel Open Source et multi-plateformes facile dusage (qui marche neacuteanmoins mieux sur Linux Dia

que sur Windows)

(version gratuite)Objecteering

Cleacutes artificielles et optimisation est-il toujours plus performant dutiliser des cleacutes artificielles

Conseil

Compleacutement Outils de modeacutelisation UML

Etu (id numEtu) avec numEtu cleacute

UV (id codeUv) avec codeUv cleacute

Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

Etu (numEtu)

UV (codeUv)

Inscriptions (uv=gtUV etu=gtEtu)

Bibliographie commenteacutee sur la modeacutelisation UML

28

- - - - - -

- - - - - -

Agrave voir eacutegalement en Open Source ou (non testeacute par lauteur)ArgoUML EclipseUML

UML2 en action

Pour un aperccedilu plus deacutetailleacute des possibiliteacutes dexpression du diagramme de classe UML lire le chapitre 7 Deacuteveloppement du modegravele statique (pages 133 agrave 163)

On pourra notamment y trouver

Lassociation dagreacutegationLes proprieacuteteacutes dassociationLexpression de rocircles dans les associationsLes attributs de classeLes qualificatifsLes opeacuterations (ou meacutethodes)

Le chapitre donne de plus des conseils meacutethodologiques pour la conception (voir en particulier la synthegravese page 163)

On pourra eacutegalement y trouver

Des principes de choix de modeacutelisation entre attributs et classes et sur la segmentation des classesDes principes de seacutelection des attributs (redondance avec les associations avec les classes etc)Des principes de seacutelection des associationsDes principes de choix de cardinaliteacute (notamment pour la gestion dhistorisation)Des principes de seacutelection des relations de geacuteneacuteralisation (heacuteritage)Des principes dintroduction de meacutetaclasses (type)s

U M L e n Franccedilais

Une tregraves bonne reacutefeacuterence en ligne sur la modeacutelisation UML avec des cours des liens vers la norme etc

Le contenu deacutepasse tregraves largement lusage dUML pour la modeacutelisation de BD (et ne fait dailleurs pas de reacutefeacuterence preacutecise agrave ce sous-ensemble particulier)

On pourra consulter en particulier le chapitre sur les diagrammes de classe httpumlfreefrcoursi-p14html

UML en 5 eacutetapes

On consultera en particulier le tutoriel sur les diagrammes de classe httpdeveloppeurjournaldunetcomtutorielcpt010607cpt_umlintroshtml

Cinq petits conseils pour un scheacutema UML efficace

Compleacutement Modeacutelisation UML

Compleacutement Reacutefeacuterence UML en ligne

Compleacutement Tutoriel sur la modeacutelisation UML

Compleacutement Conseils

Synthegravese Les diagrammes de modeacutelisation conceptuelle

29

-

-

- -

-

- -

-

-

- -

-

- - - -

-

-

(chapitre 3)UML2 par la pratique

Des explications exemples et eacutetudes de cas

54 Synthegravese Les diagrammes de modeacutelisation conceptuelle

Un modegravele conceptuel peut ecirctre repreacutesenteacute sous forme de diagramme E-A ou sous forme de diagramme de classe UML

Classe ou Entiteacute

Attribut ou Proprieacuteteacute

TypeacuteMulti-valueacuteComposeacuteDeacuteriveacute

Meacutethode

ParamegravetresValeur de retour

Association

Association

VerbeCardinaliteacute

Heacuteritage

Heacuteritage dattributsHeacuteritage de meacutethodes

Composition (ou entiteacute faible)

Cardinaliteacute

Compleacutement Pratique

Exercices

30

-

-

-

-

-

-

-

1 2

1

1 Exercice Lab III[20 min]

Description du problegraveme

Un laboratoire souhaite geacuterer les meacutedicaments quil conccediloit

Un meacutedicament est deacutecrit par un nom qui permet de lidentifier En effet il nexiste pas deux meacutedicaments avec le mecircme nom Un meacutedicament comporte une description courte en franccedilais ainsi quune description longue en latin On gegravere aussi le conditionnement du meacutedicament cest agrave dire le nombre de pilules par boicircte (qui est un nombre entier)Agrave chaque meacutedicament on associe une liste deacutedieacutee de contre-indications geacuteneacuteralement plusieurs parfois aucune Les contre-indications sont trieacutees par ordre dimportance Lordre est total est strict pour un meacutedicament donc chaque contre-indication possegravede une importance et il nexiste pas deux contre-indications associeacutees au mecircme meacutedicament avec la mecircme importanceTout meacutedicament possegravede au moins un composant souvent plusieurs Un composant est identifieacute par un code unique et possegravede un intituleacute Tout composant peut intervenir dans la fabrication de plusieurs meacutedicaments Il existe des composants qui ne sont pas utiliseacutes pour fabriquer des meacutedicaments et que lon veut quand mecircme geacuterer

Donneacutees de test

Afin de mateacuterialiser notre base de donneacutees nous obtenons les descriptions suivantes

Le a pour description courte et pour description longue Chourix Meacutedicament contre la chute des chouxlaquo raquoVivamus fermentum semper porta Nunc diam velit adipiscing ut tristique vitae sagittis vel odio laquo

Il est conditionneacute en boicircte de 13Maecenas convallis ullamcorper ultricies Curabitur ornare raquoSes contre-indications sont

Le Chourix ne doit jamais ecirctre pris apregraves minuitLe Chourix ne doit jamais ecirctre mis au contact avec de leau

Ses composants sont le et le HG79 SN50Le a pour description courte et pour Tropas Meacutedicament contre les dysfonctionnements intellectuelslaquo raquodescription longue Suspendisse lectus leo consectetur in tempor sit amet placerat quis neque Etiam laquo

Il est conditionneacute en boicircte de 42luctus porttitor lorem sed suscipit est rutrum non raquoSes contre-indications sont

Le Tropas doit ecirctre gardeacute agrave labri de la lumiegravere du soleil

Son unique composant est le HG79Les composants existants sont

HG79 Vif-argent alleacutegeacute

ExercicesII

Exercice Eacutetudiants et UVs (introduction)

31

- - -

- - HG81 Vif-argent alourdi

SN50 Pur eacutetain

Question 1

Question 2

Question 3

2 Exercice Eacutetudiants et UVs (introduction)[20 min]

On dispose du scheacutema UML ci-apregraves qui deacutecrit des eacutetudiants des UV les notes obtenues par les eacutetudiants agrave ces UV et les diplocircmes dorigine de ces eacutetudiants

Eacutetudiants et UVs

key deacutesigne des cleacutes candidates ici toutes les cleacutes ne sont composeacutees que dun seul attributlocal key deacutesigne une cleacute localeun semestre est de la forme PYYYY ou AYYYY (ougrave YYYY deacutesigneacute une anneacutee sur 4 chiffre) exemple A2013 P2014

Rappel Notion de cleacute locale dans classes dassociation (cf p49)

Effectuez le modegravele conceptuel en UML de ce problegraveme

Indices

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans deacutedieacuteeles donneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition

[ ]solution ndeg4 [ ] p56

En mobilisant les regravegles adeacutequates proposer un modegravele logique de donneacutees correspondant en relationnel Le repeacuterage des domaines et des cleacutes est obligatoire

[ ]solution ndeg5 [ ] p57

Dessiner des tableaux remplis avec les donneacutees fournies en exemple afin de montrer que le modegravele fonctionne selon le besoin exprimeacute initialement On pourra mettre le premier mot seulement des descriptions pour gagner du temps

[ ]solution ndeg6 [ ] p57

Exercice Super-heacuteros relationnels I

32

-

-

Question

3 Exercice Super-heacuteros relationnels I[20 min]

La gamme de super-heacuteros GARVEL veut reacutealiser la base de donneacutees de leurs figurines articuleacutees La socieacuteteacute a fait reacutealiser un modegravele UML qui doit servir de point de deacutepart agrave la mise en œuvre

Modegravele UML Figurines GARVEL

Question

4 Exercice Objets Numeacuteriques Libres[30 min]

Lassociation ONL (Objets Numeacuteriques Libres) est une association de promotion des logiciels libres Elle souhaite exposer sur un site Internet une liste de logiciels libres Ce site sera adosseacute agrave une base de donneacutees relationnelle ou relationnel-objet La premiegravere eacutetape de sa deacutemarche est de reacutealiser un modegravele conceptuel repreacutesentant ce quelle souhaite faire

La base de donneacutees permet de geacuterer des applicationsLes applications sont identifieacutees par leur nom (LibreOffice Gimp) et leur version (10 21) et comportent une description courte et une URL Tous les attributs sont obligatoires Chaque application a une URL uniqueLa base de donneacutees permet de geacuterer des librairies

Traduire le scheacutema en modegravele logique relationnel ( )MLD1

On choisira obligatoirement les cleacutes primaires parmi celles neacutecessitant le plus petit nombre de bits possible pour leur codage

[ ]solution ndeg7 [ ] p57

Transformer le modegravele UML en modegravele relationnel (justifier les passages non triviaux en particulier la relation dheacuteritage)

[ ]solution ndeg8 [ ] p58

Exercice Objets Numeacuteriques Libres

33

-

-

-

-

-

-

-

-

-

-

-

-

Les librairies sont des logiciels mais pas des applications Elles ont les mecircmes attributs que les applications (nom version description courte URL) mais les URL ne sont pas neacutecessairement uniques Les applications peuvent deacutependre de librairies ou dautres applications et les librairies peuvent deacutependre dautres librairies (mais pas dune application)La base de donneacutees permet de geacuterer des composantsLes composants sont inteacutegreacutes agrave une application ou librairie Les composants ont un code interne agrave lapplication ou la librairie quil servent une version et une description courte et une URL Le code et le numeacutero de version permettent didentifier localement le composant au sein de la librairie ou de lapplication la description courte et lURL sont optionnellesLa base de donneacutees permet de geacuterer des licencesLes applications librairies et composants sont attacheacutes agrave une ou plusieurs licences identifieacutees par leur nom (GPL MPL) leur version et leur langue et comportant le texte inteacutegral de la licence Les versions des logiciels et licences sont de type numeacutero de licence majeur point numeacutero de licence mineur comme 10 ou 22La base de donneacutees permet de geacuterer des cateacutegoriesChaque logiciel est rangeacute dans une cateacutegorie principale et plusieurs cateacutegories secondaires Exemple de cateacutegories bureautique dessin multimeacutedia physique

Exemple (factice) de donneacutees

Applications

Scenari 41 une chaicircne eacuteditoriale XML httpscenariorg deacutepend de Libreoffice 43 et de ImageMagick 68Libreoffice 43 une suite bureautique WYSIWYG httplibreofficeorg

Librairie

ImageMagick 68 permet de creacuteer de convertir de modifier et dafficher des images http imagemagickorg

Composant

impng 02 est un composant de ImageMagick 68 permet de compresser une image au format PNG

Toutes ces applications librairies et composants sont disponibles sous une licence LGPL 30 et GPL 30 franccedilaisesToutes ces applications et librairies sont rangeacutees dans la cateacutegorie principale document Scenari est rangeacute dans la cateacutegorie secondaire Eacutedition WYSIWYM Libreoffice dans la cateacutegorie secondaire Bureautique ImageMagick dans la cateacutegorie secondaire Multimeacutedia

Question

Reacutealiser un MCD en UML[ ]solution ndeg9 [ ] p58

Devoirs

34

1 Exercice Arbre de scegravene 3D[30 minutes]

On souhaite pouvoir geacuterer les diffeacuterents eacuteleacutements composant des scegravenes 3D dans une base de donneacutees Une scegravene contient des objets qui eux-mecircmes peuvent appartenir agrave plusieurs scegravenes (au moins une) mais il ne peut y avoir plusieurs fois le mecircme objet dans une mecircme scegravene Dans chaque scegravene les objets peuvent ecirctre visibles ou invisibles Les scegravenes et les objets sont identifieacutes de maniegravere unique par un nom Une scegravene peut ecirctre active ou inactive Un objet a comme proprieacuteteacute une position dans lespace repreacutesenteacutee par un vecteur de reacuteels agrave trois composantes (x y z) Les objets sont organiseacutes de maniegravere hieacuterarchique un objet peut ecirctre parent de plusieurs objets et chaque objet peut avoir au plus un parent Des scripts peuvent ecirctre associeacutes agrave un objet ou agrave une scegravene (agrave lun ou agrave lautre mais pas aux deux) Un script est identifieacute de maniegravere unique par un nom et possegravede eacutegalement un attribut permettant de connaicirctre son eacutetat (actif ou inactif) Un personnage est un objet particulier qui possegravede des animations Une animation est relative agrave un personnage et est identifieacutee de maniegravere locale par un nom Agrave un objet est associeacute un maillage et celui-ci peut ecirctre utiliseacute par plusieurs objets Un maillage est identifieacute de maniegravere unique par un nom et est composeacute de plusieurs eacuteleacutements Chaque eacuteleacutement est relatif agrave un maillage et est identifieacute de maniegravere locale par un numeacutero Il existe exactement trois types deacuteleacutement des nœuds des arrecirctes et des faces Une face est deacutelimiteacutee par trois arrecirctes et chaque arrecircte est deacutelimiteacutee par deux nœuds Plusieurs arrecirctes peuvent partager un mecircme nœud et plusieurs faces peuvent partager une mecircme arrecircte Afin deacutevaluer la complexiteacute dune scegravene on souhaite pouvoir calculer le nombre de faces afficheacutees pour une scegravene donneacutee (cest-agrave-dire la somme du nombre de faces du maillage associeacute aux objets visibles de la scegravene) Un maillage possegravede plusieurs mateacuteriaux identifieacutes de maniegravere unique par un nom Un mateacuteriau peut ecirctre associeacute agrave plusieurs maillages Un mateacuteriau est caracteacuteriseacute par une couleur deacutefinie par un vecteur dentiers agrave quatre composantes rouge vert bleu alpha Un mateacuteriau peut posseacuteder une texture et celle-ci peut ecirctre utiliseacutee par plusieurs mateacuteriaux Une texture est identifieacutee de maniegravere unique par un nom et possegravede comme attribut une image

Question 1

Question 2

DevoirsIII

Proposez une clarification de ce problegraveme On pourra reclasser les informations par grande cateacutegorie scegravene objets scripts

Eacutetablissez un modegravele conceptuel en UML de ce problegraveme

Compleacutement Exercices de modeacutelisation suppleacutementaire

35

1 Exercice Appartements agrave louer[30 min]

Une agence dimmobilier (ventes et locations) veut geacuterer son parc dappartements dans une base de donneacutees Chaque appartement possegravede plusieurs piegraveces qui peuvent ecirctre des piegraveces dhabitation des piegraveces de rangement ou des commoditeacutes

Chaque piegravece a une superficie un nombre de prises eacutelectriques et des meubles Pour ces derniers on veut enregistrer le nom du modegravele et le type (chaise lit four etc) Rien nempecircche quune piegravece comporte plusieurs meubles identiques (par exemple plusieurs chaises PIN IQUEA) Les piegraveces dhabitation ont une ou plusieurs fenecirctres les piegraveces de rangement ont une ou plusieurs eacutetagegraveres et une surface de rangement utile totale On veut aussi savoir dans quelles piegraveces de rangement se situent les tableaux eacutelectriques de lappartement Finalement les piegraveces commoditeacutes peuvent ecirctre de trois types cuisine toilette ou salle de bain

Lagence veut aussi enregistrer les portes entre les diffeacuterentes piegraveces Une porte peut ecirctre agrave simple battant double battant coulissante ou une simple ouverture

Chaque appartement a une adresse une superficie totale (qui est la somme des superficies des piegraveces) et un type qui est la lettre T suivie du nombre de piegraveces dhabitation de lappartement Pour un appartement donneacute chaque piegravece est identifieacutee par un numeacutero (commenccedilant au numeacutero 1)

Lagence veut eacutegalement enregistrer le quartier ougrave se trouve lappartement auquel est lieacute un prix par megravetre carreacute Finalement elle veut garder un historique de lhistoire de lappartement les peacuteriodes pour lesquelles il est libre occupeacute en travaux ou vendu

Question

2 Exercice Objectifs[40 min]

Vous prenez la preacutesidence de lassociation Objectifs dont lobjet est daider ses eacutetudiants membres agrave mener des projets dans le cadre de leurs eacutetudes

Compleacutement Exercices de modeacutelisation suppleacutementaire

IV

Reacutealisez le diagramme UML reacutepondant aux besoins de cette agence[ ]solution ndeg10 [ ] p59

Exercice Objectifs

36

- - -

-

-

- - -

Vous constatez en arrivant dans lassociation que personne ne sait exactement quels sont les projets en cours ni qui fait quoi dans les projets Vous ne parvenez pas non plus agrave obtenir une liste exacte des partenaires sur lesquels lassociation peut compter La seule chose sur laquelle vous parvenez agrave mettre la main est un fichier tableur vaguement agrave jour

Vous deacutecidez quil est plus que temps de mettre en place une base de donneacutees afin dassurer la bonne gestion des informations les plus importantes pour lassociation Vous vous attachez pour cela agrave reacutealiser une analyse des besoins

Analysez les documents ci-apregraves

Etat des projets

Eacutetat des projets de lassociation Objectifs

Recueil de besoins

Agrave partir de leacutetude du fonctionnement actuel de lassociation vous relevez les choses importantes agrave geacuterer suivantes

Les membres de lassociation geacuteneacuteralement identifieacutes par leur preacutenomLes projets geacutereacutes par lassociation avec des dates de deacutebut et de fin preacutecises et un chef de projetLe deacutetail des tacircches de chaque projet avec leurs dates de deacutebut et de fin aussi et la liste de tous les membres qui y participentLa liste des partenaires des projets avec leur rocircle preacutecis pour chacun des projets auxquels ils participent

Afin de mieux geacuterer les attributions des projets il serait eacutegalement inteacuteressant de creacuteer une liste des speacutecialiteacutes correspondant agrave ce qui ce fait dans lassociation et daffecter une speacutecialiteacute agrave chaque membre ainsi quune agrave chaque projet pour voir si ce sont bien les membres les mieux adapteacutes qui travaille sur les projets

Recueil de donneacutees

Les discussions avec les anciens membres de lassociation vous apprennent les choses suivantes

Lassociation a termineacute de geacuterer les trois projets Comeacutedie Musicale geacutereacutee par Nathalie sur les trois premiers mois du semestre dautomne 1001 Science en fecircte geacutereacutee par Pierre sur tout le semestre de printemps 1003 et Nuit du picolo geacutereacutee par Julien en novembre 1001Les speacutecialiteacutes recenseacutees pour le moment sont Ville Universiteacute Sport Entreprise Culture InternationalIl faut au moins dix membres agrave lassociation (sinon elle ferme) recruter ceux qui manquentAidez lassociation agrave diviser ses projets en tacircches

Exercice Objectifs

37

- Les partenaires suivants aident ou ont aideacute lassociation la mairie pour la comeacutedie musicale et la science en fecircte qui apporte un soutien financier le ministegravere de la culture qui apporte son soutien logistique agrave la science en fecircte lassociation des commerccedilants de la ville qui apporte son soutien publicitaire agrave la comeacutedie musicale 1664 qui offre ses biegraveres agrave moitieacute prix pour la nuit du Picolo

Question 1

Question 2

Question 3

Afin de preacuteparer une analyse des besoins sommaire listez les donneacutees que vous devrez geacuterer agrave laide des documents et recueils de discussion agrave votre disposition Faites des hypothegraveses lorsque les donneacutees sont incomplegravetes ou incoheacuterentes

[ ]solution ndeg11 [ ] p59

Reacutealiser le MCD en UML et en E-A agrave partir des donneacutees preacutepareacutees dans la question preacuteceacutedente[ ]solution ndeg12 [ ] p60

Reacutealiser le MLD en relationnel en traduisant votre MCD[ ]solution ndeg13 [ ] p61

Contenus annexes

38Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

- - -

gt Attributs

Un attribut est une information eacuteleacutementaire qui caracteacuterise une classe et dont la valeur deacutepend de lobjet instancieacute

Le domaine des valeurs que peut prendre lattribut est fixeacute a prioriUn attribut est typeacute

Il peut prendre plusieurs valeurs distinctes dans son domaineUn attribut peut ecirctre multivalueacute Sa valeur alors est une fonction sur dautres attributs de la classeUn attribut peut ecirctre deacuteriveacute

(ou composite) Il joue alors le rocircle dun groupe dattributs (par Un attribut peut ecirctre composeacuteexemple une adresse peut ecirctre un attribut composeacute des attributs numeacutero type de voie nom de la voie) Cette notion renvoie agrave la notion de variable de type dans les langages de Record

programmation classiques

En UML on preacutefegravere lusage de meacutethodes aux attributs deacuteriveacutes On utilisera toujours des meacutethodes degraves que la valeur de lattribut deacuteriveacute deacutepend dautres attributs exteacuterieurs agrave sa classeEn UML on preacutefegravere lusage de compositions aux attributs composeacutes On utilisera toujours des compositions pour les attributs composeacutes et multivalueacutes

1 attributtype2 attribut_multivalueacute[nbMinValeursnbMaxValeurs]type3 attribut_deacuteriveacutetype4 attribut_composeacute5   - sous-attribut1type6   - sous-attribut2type7   -

Contenus annexes

Deacutefinition Attribut

Attention On utilise peu les attributs deacuteriveacutes et composeacutes en UML

Syntaxe

attributtype

attribut_multivalueacute[nbMinValeursnbMaxValeurs]type

attribut_deacuteriveacutetype

attribut_composeacute

  - sous-attribut1type

  - sous-attribut2type

  -

Contenus annexes

39Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Repreacutesentation dattributs en UML

Dans cet exemple les attributs Nom Preacutenom sont de type lun de 20 caractegraveres et lautre de 10 stringtandis que DateNaissance est de type et Age de type Preacutenom est un attribut multivalueacute ici date integerune personne peut avoir de 1 agrave 3 preacutenoms Age est un attribut deacuteriveacute il est calculeacute par une fonction sur DateNaissance

Meacutethodes (cf p39)

Composition (cf p5)

gt Meacutethodes

Une meacutethode (ou opeacuteration) est une fonction associeacutee agrave une classe dobjet qui permet dagir sur les objets de la classe ou qui permet agrave ces objets de renvoyer des valeurs (calculeacutees en fonction de paramegravetres)

1 methode(paramegravetres)type

Pour la modeacutelisation des bases de donneacutees les meacutethodes sont surtout utiliseacutees pour repreacutesenter des donneacutees calculeacutees (agrave linstar des attributs deacuteriveacutees) ou pour mettre en exergue des fonctions importantes du systegraveme cible Seules les meacutethodes les plus importantes sont repreacutesenteacutees lapproche est moins systeacutematique quen modeacutelisation objet par exemple

Lors de la transformation du modegravele conceptuel UML en modegravele logique relationnel les meacutethodes ne Leur repeacuterage au niveau conceptuel sert donc surtout daide-seront geacuteneacuteralement pas impleacutementeacutees

meacutemoire pour limpleacutementation au niveau applicatif

Exemple La classe Personne

Compleacutement Voir aussi

Deacutefinition Meacutethode

Syntaxe

Remarque Meacutethodes et modeacutelisation de BD

Remarque Meacutethodes relationnel relationnel-objet

methode(paramegravetres)type

Contenus annexes

40Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Au contraire un modegravele logique relationnel-objet permettra limpleacutementation de meacutethodes directement associeacutees agrave des tables Leur repeacuterage au niveau conceptuel est donc encore plus important

Transformation des meacutethodes par des vues (cf p40)

gt Transformation des meacutethodes par des vues

Lorsquune meacutethode est speacutecifieacutee sur un diagramme UML pour une classe C si cette meacutethode est une fonction relationnelle (elle renvoie une unique valeur et elle peut ecirctre reacutesolue par une requecircte SQL) alors on creacutee une vue qui reprend les attributs de la classe C et ajoute des colonnes calculeacutees pour les meacutethodes

Les attributs deacuteriveacutes eacutetant apparenteacutes agrave des meacutethodes ils peuvent eacutegalement ecirctre geacutereacutes par des vues

gt Classe dassociation

On utilise la notation des classes dassociation lorsque lon souhaite ajouter des proprieacuteteacutes agrave une association

Notation dune classe dassociation en UML

On reacuteserve en geacuteneacuteral les classes dassociation aux associations NM

Il est toujours possible de reacuteduire une classe dassociation sur une association 1N en migrant ses attributs sur la classe cocircteacute N et cest en geacuteneacuteral plus lisible ainsi

Compleacutement

Meacutethode

Remarque Attributs deacuteriveacutes

Deacutefinition Classe dassociation

Syntaxe Notation dune classe dassociation en UML

Meacutethode

Contenus annexes

41Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

-

Emplois

Selon le standard UML une classe dassociation est une classe et agrave ce titre elle peut ecirctre mobiliseacutee dans dautres associations ou dans des heacuteritages Nous deacuteconseillons neacuteanmoins ces notations qui ont tendance agrave complexifier la lecture et la transformation du diagramme

Nous conseillons donc de ne jamais associer une classe dassociation

gt Transformation des attributs

Pour chaque attribut eacuteleacutementaire et monovalueacute dune classe

on creacutee un attribut correspondant

Attribut

Classe1(ab)

Pour chaque attribut composite comprenant N sous-attributs dune classe

on creacutee N attributs correspondantsdont les noms sont la concateacutenation du nom de lattribut composite avec celui du sous-attribut

Exemple Exemple de classe dassociation

Conseil

Meacutethode Attributs simples

Meacutethode Attributs composites

Contenus annexes

42Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- - - -

Attribut composeacute

Classe1(ab_b1b_b2)

Pour chaque attribut multivalueacute b dune classe C

on creacutee une nouvelle relation RBqui comprend un attribut monovalueacute correspondant agrave bplus la cleacute de la relation repreacutesentant C la cleacute de RB est la concateacutenation des deux attributs

Attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Dans le cas ougrave le nombre maximum de est fini et petit on peut eacutegalement adopter la transformation b

suivante Classe1(ab1b2b3b4b5b6b7b8b9b10)

Si le nombre dattributs est infini ( ) cest impossible sil est trop grand ce nest pas souhaitableb[1]

On combine les regravegles eacutenonceacutees pour les attributs composeacutes et pour les attributs multivalueacutes

Attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Transformation des compositions (cf p42)

Meacutethode Attributs multivalueacutes

Meacutethode Attributs multivalueacutes (meacutethode alternative)

Meacutethode Attributs composeacutes multivalueacutes

Rappel Voir aussi

Contenus annexes

43Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

gt Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Compleacutement Attributs multivalueacutes et composeacutes

Contenus annexes

44Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

Rappel Voir aussi

Rappel

Meacutethode

Contenus annexes

45Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p48)

gt Transformation des associations 1N

Pour chaque association binaire de type 1N

on ajoute agrave la relation cocircteacute N une cleacute eacutetrangegravere vers la relation cocircteacute 1

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Meacutethode

Contenus annexes

46Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Association 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Contrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p46)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

R1

Compleacutement

Rappel

Meacutethode

Contenus annexes

47Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p47)

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Deacutefinition Projection

Contenus annexes

48Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Deacutefinition Projection

Contenus annexes

49Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Transformation des classes dassociation

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de lassociation NM

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Meacutethode Classe dassociation NM

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Exercice

15

25 Correspondance entre UML et relationnel

Passsage UML vers Relationnel

Exercice

16

26 ExerciceQuel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

[ ]solution ndeg2 [ ] p53

Exercice

17

27 ExerciceSoit le scheacutema UML suivant

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

[ ]solution ndeg3 [ ] p54

Modeacutelisation avanceacutee des associations 11 en relationnel

18

-

- -

-

-

3 Modeacutelisation avanceacutee des associations 11 en relationnelObjectifs

Savoir faire le passage dun scheacutema conceptuel UML agrave un scheacutema relationnel

Connaicirctre les choix possibles pour le cas de lassociation 11 et savoir faire le meilleur choix

Il existe des formulations conceptuelles en UML qui sont plus deacutelicates agrave traduire au niveau logique en relationnel comme lassociation 11 Ces cas requiegraverent un choix eacuteclaireacute de la part du concepteur

31 Transformation des associations 11 (approche geacuteneacuterale)

Il existe deux solutions pour transformer une association 11

Avec deux relations on traite lassociation 11 comme une association 1N puis lon ajoute une contrainte UNIQUE sur la cleacute eacutetrangegravere pour limiter la cardinaliteacute maximale agrave 1 Avec une seule relation on fusionne les deux classes en une seule relation

Association 11

Une des deux relations est choisie pour porter la cleacute eacutetrangegravere on ajoute les contraintes ou (cleacute candidate) sur la cleacute eacutetrangegravere et si neacutecessaire une UNIQUE KEY

contrainte imposant linstanciation simultaneacutee des deux relations

Classe1(abc=gtClasse2) avec c UNIQUE ou KEY

Classe2(cd)

ou

Classe1(ab)

Classe2(cda=gtClasse1) avec a UNIQUE ou KEY

On creacuteeacute une seule relation contenant lensemble des attributs des deux classes

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Meacutethode Avec deux relations (cleacute eacutetrangegravere)

Meacutethode Avec une relation (fusion)

Transformation des associations 1111

19

- -

- - - - - -

- on choisit une cleacute parmi les cleacutes candidates

Classe12(abcd) avec c UNIQUE ou KEY

ou

Classe21(cdab) avec a UNIQUE ou KEY

Ce choix entre les deux meacutethodes sera conduit par une appreacuteciation du rapport entre

La complexiteacute introduite par le fait davoir deux relations lagrave ou une suffitLa pertinence de la seacuteparation des deux relations dun point de vue seacutemantiqueLes pertes de performance dues agrave leacuteclatement des relationsLes pertes de performance dues au fait davoir une grande relationLes questions de seacutecuriteacute et de sucircreteacute factoriseacutees ou non au niveau des deux relations

Dans le cas dune association 1111 il faudra ajouter une contrainte compleacutementaire

Transformation des associations 1111 (cf p19)

32 Transformation des associations 1111

Le plus souvent cest meacutethode par des relations qui est la plus adapteacutee agrave ce casfusionLorsquelle ne lest pas et que lon choisit deux relations il faut ajouter une contrainte dynamique qui controcirclera que les deux relations sont bien toujours instancieacutees ensembles Notons que la cleacute eacutetrangegravere peut ecirctre choisie comme cleacute primaire

Association 11

Classe12(abcd) avec c KEY

ou

Classe21(cdab) avec a KEY

ou

Classe1(abc=gtClasse2) avec c KEY

Classe2(cd)

Contrainte PROJECTION(Classe1c) = PROJECTION(Classe2c)

ou

Classe1(ab)

Remarque Fusion des relations dans le cas de la traduction de lassociation 11

Compleacutement

Meacutethode Association 1111

Transformation des associations 0111

20

-

-

-

-

Classe2(cda=gtClasse1) avec a KEY

Contrainte PROJECTION(Classe1a) = PROJECTION(Classe2a)

La contrainte dynamique exprimeacutee ici suit le mecircme principe que pour les association 1NContrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p44)

33 Transformation des associations 0111

Le plus souvent cest la meacutethode par les deux relations qui est la plus adapteacutee on choisira toujours la relation cocircteacute 01 pour ecirctre reacutefeacuterenccedilante

Il est possible dutiliser la fusion dans ce cas les cleacutes cocircteacute 01 deviennent des attributs il ne UNIQUE

peuvent plus ecirctre cleacutes pouvant ecirctre NULL

Association 011

Classe1(abc=gtClasse2) avec c KEY

Classe2(cd)

ou

Classe12(cdab) avec a UNIQUE

34 Transformation des associations 0101

On choisit la solution avec deux relations dun cocircteacute ou de lautre la cleacute eacutetrangegravere est associeacute agrave la contrainte ce nest pas une cleacute car elle peut ecirctre nulleUNIQUE

Il nest pas souhaitable de choisir la fusion lune des deux relations pouvant ecirctre nulle on ne pourrait plus trouver de cleacute naturelle

Association 0101

Classe1(abc=gtClasse2) avec c UNIQUE

Classe2(cd)

ou

Compleacutement Contrainte dynamique

Meacutethode Association 0111

Meacutethode Association 0101

Exemple de choix pour une relation 11

21

-

- -

-

-

Classe1(ab)

Classe2(cda=gtClasse1) avec a UNIQUE

35 Exemple de choix pour une relation 11

Soit deux entiteacutes homme et femme et une association mariage de cardinaliteacute 1111 entre ces deux entiteacutes (hommes et femmes sont donc obligatoirement marieacutes)Les entiteacutes homme et femme sont identifieacutees par un attribut nom (dans ce modegravele chaque personne a un nom unique on pourrait remplacer le nom par un identifiant comme le numeacutero de seacutecuriteacute social ou par une cleacute artificielle pour ecirctre plus proche de la reacutealiteacute)

Bien que de type 1111 le choix de la fusion nest pas tregraves opportun car il sagit bien dobjets distincts que lon veut modeacuteliser

On choisira donc plutocirct la repreacutesentation avec deux relationsLa cleacute eacutetrangegravere pourra ecirctre du cocircteacute homme ou femme mecircme si la pratique dominante nous incite agrave la mettre du cocircteacute femmeOn pourra eacutegalement deacutecider de prendre la cleacute eacutetrangegravere comme cleacute primaire

1 homme (nom)2 femme (mariage=gthomme nom) avec nom KEY3 Contrainte PROJ(hommenom) = PROJ(femmemariage)

Si lassociation avait eacuteteacute de cardinaliteacute 0101 (certains hommes et femmes ne sont pas marieacutes) un choix similaire se serait imposeacute avec limpossibiliteacute de choisir la cleacute eacutetrangegravere comme cleacute primaire celle-ci pouvant ecirctre nulle et neacutetant donc plus candidate

1 homme (nom)2 femme (nom mariage=gthomme) avec mariage UNIQUE

4 Autres eacuteleacutements utiles en UML packages et steacutereacuteotypesObjectifs

Maicirctriser le diagramme de classe UML dans le cas de la conception de BD

41 Paquetages

Les paquetages (plus communeacutement appeleacutes ) sont des eacuteleacutements servant agrave organiser un modegravelepackage

Ils sont particuliegraverement utiles degraves que le modegravele comporte de nombreuses classes et que celles-ci peuvent ecirctre trieacutees selon plusieurs aspects structurants

Exemple

Exemple

Deacutefinition Package

homme (nom)

femme (mariage=gthomme nom) avec nom KEY

Contrainte PROJ(hommenom) = PROJ(femmemariage)

homme (nom)

femme (nom mariage=gthomme) avec mariage UNIQUE

Steacutereacuteotype

22

Notation des paquetages en UML

Exemple dutilisation des packages

On repreacutesente chaque classe au sein dun Il est alors possible de faire une preacutesentation globale du packagemodegravele (tous les ) partielle (une partie des ) ou centreacutee sur un seul packages packages package

Pour une repreacutesentation partielle ou centreacutee sur un on repreacutesente les concerneacutes avec leurs package packagesclasses propres ainsi que toutes les classes lieacutees des autres packages (et seulement celles-ci)

Preacutesentation partielle du modegravele centreacutee sur un package

Syntaxe

Exemple

Meacutethode

Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt

23

42 Steacutereacuteotype

Un steacutereacuteotype UML est une syntaxe permettant dajouter de la seacutemantique agrave la modeacutelisation des classes Il permet de deacutefinir des afin de regrouper conceptuellement un ensemble de classes (agrave linstar types de classedune classe qui permet de regrouper conceptuellement un ensemble dobjets)

Cest une meacutecanique de meacuteta-modeacutelisation elle permet deacutetendre le meacuteta-modegravele UML cest agrave dire le modegravele conceptuel du modegravele conceptuel

Un meacuteta-modegravele est le modegravele dun modegravele Par exemple le meacuteta-modegravele UML comprend les concepts de classe attribut association cardinaliteacute composition agreacutegation contraintes annotations On mobilise ces concepts (on les instancie) pour exprimer un modegravele particulier suivant le formalisme UML

Les steacutereacuteotypes permettent donc dajouter au meacuteta-modegravele UML standard celui que tout le monde utilise des concepts locaux pour enrichir le langage de modeacutelisation que lon utilise pour reacutealiser des modegraveles

Notation dun steacutereacuteotype en UML

Un steacutereacuteotype speacutecifique enrichit le meacuteta-modegravele UML mais selon une seacutemantique qui est propre agrave celui qui la poseacute non standard donc La conseacutequence est que pour un tiers linterpreacutetation du steacutereacuteotype nest plus normaliseacutee et sera potentiellement plus facilement erroneacutee Il convient donc de ne pas abuser de cette meacutecanique

Deux ou trois steacutereacuteotypes speacutecifiques correctement deacutefinis sont faciles agrave transmettre plusieurs dizaines repreacutesenteraient un nouveau langage complet agrave apprendre pour le lecteur du modegravele

Il existe des steacutereacuteotypes fournit en standard par UML ou communeacutement utiliseacutes par les modeacutelisateurs Lavantage est quil seront compris plus largement au mecircme titre que le reste du meacuteta-modegravele (ils ont une valeur de standard)

43 Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt

Deacutefinition Steacutereacuteotype UML

Deacutefinition Meacuteta-modegravele

Syntaxe

Conseil Steacutereacuteotypes speacutecifiques et steacutereacuteotypes standard

Syntaxe

Type utilisateurs steacutereacuteotype ltltdataTypegtgt

24

Steacutereacuteotype UML permettant dexprimer une eacutenumeacuteration

Exemple de modeacutelisation UML deacutenumeacuteration

44 Type utilisateurs steacutereacuteotype ltltdataTypegtgt

Les types utilisateurs permettent de deacutefinir des types complexes propres en extension des types primaires (entier chaicircne date)

Steacutereacuteotype dataType

Steacutereacuteotype dataType (exemple)

Cette modeacutelisation est eacutequivalente agrave la modeacutelisation des attributs composeacutes directement dans la classe principale Cest une repreacutesentation plus standard en UML

Exemple

Syntaxe

Exemple

Meacutethode Attributs composeacutes

Synthegravese sur la modalisation UML et relationnelle

25

Quelques eacuteleacutements de stylistique UML

26

-

- -

-

-

-

- - -

- - - -

1

2

3

5 Synthegravese sur la modalisation UML et relationnelle51 Quelques eacuteleacutements de stylistique UML

Toutes les associations doivent ecirctre nommeacutees (sauf composition heacuteritage agreacutegation)Ne pas utiliser de nom geacuteneacuterique pour les Classes comme Entiteacute Classe Objet TrucEacuteviter les noms geacuteneacuteriques pour les associations (comme est associeacute agrave)Attention au sens des compositions et agreacutegation le losange est cocircteacute ensemble et noubliez pas les cardinaliteacutes notamment cocircteacute parties

Nutilisez pas le souligneacute ni les en UML pour identifier les cleacutes preacutefeacuterez la contrainte keyPreacutefeacuterez lheacuteritage aux booleacuteens de typage en UMLLes attributs deacuteriveacutes sont reacuteserveacutes aux deacuterivations simples (des attributs de la mecircme classe) si cest plus complexe preacutefeacuterez des meacutethodes (et dans le doute preacutecisez les modes de calcul sur le scheacutema ou dans une note agrave part)Donnez des exemples de contenu lorsque ce nest pas eacutevident (lorsque le couple nom dattribut et type ne permet pas de faccedilon eacutevidente de comprendre de quoi lon parle)Inutile de deacuteclarer le type booleacuteen en UML utilisez-le directement comme un type de donneacutees connu

Si tous vos heacuteritages sont exclusifs notez-le agrave part pour alleacuteger votre scheacutema (et eacuteviter labondance de XOR)

52 Attention aux cleacutes artificielles

en UML on ne pose jamais de cleacutes artificiellesen relationnel on pose rarement des cleacute artificielles sauf dans le cas de cleacutes eacutetrangegraveres vraiment trop compliqueacuteesen SQL on peut poser des cleacutes artificielles si on a une bonne raison (ce nest donc pas systeacutematique et cest agrave justifier)

On najoutera pas de cleacute artificielle en UML au moment de la modeacutelisation conceptuelle des donneacutees

Formellement en UML la notion de cleacute nexiste pas (contrairement agrave l ) elle est ajouteacutee par les E-A

pratiquants des BD

Logiquement on a pas besoin de cette notion en UML les cleacutes artificielles servent en relationnel et dans certains cas uniquementPratiquement cela peut conduire agrave des situations absurdes (comme enlever au niveau logique des cleacutes artificielles ajouteacutees au niveau conceptuel)

Attention

Conseil

Compleacutement

Fondamental

Cleacutes artificielles et niveau conceptuel

Bibliographie commenteacutee sur la modeacutelisation UML

27

-

-

- -

-

- -

-

-

3

4

5

si on fait du non-relationnel on ne doit pas ajouter de cleacutes artificielles dans certains cas (limbrication typiquement) cela arrive mecircme en relationnel avec la transformation de lheacuteritage (dans certains cas toujours)

Meacutethodologiquement il faut se concentrer agrave chaque phase sur ce qui est important donc au moment du MCD on traduit les besoins on repegravere les contraintes explicites (cleacute uniciteacute non nulliteacute) sans se preacuteoccuper de ce qui sera rendu neacutecessaire par la suite par la modeacutelisation relationnelle (les cleacutes eacutetrangegraveres par exemple) ou limpleacutementation (loptimisation par exemple) Agrave chaque jour suffit sa peine Peacutedagogiquement enfin les deacutebutants ont tendance (agrave cause des environnements de conception graphique comme phpMyAdmin notamment) agrave systeacutematiser les cleacutes artificielles en SQL (on pourrait en discuter) mais eacutegalement agrave ne pas faire le travail de recherche des cleacutes naturelles (au niveau relationnel notamment ce qui est une faute de modeacutelisation) Donc au plus tard on fait intervenir les cleacutes artificielles au plus on a une chance de penser aux cleacutes naturelles

Soit le modegravele relationnel suivant

1 Etu (id numEtu) avec numEtu cleacute 2 UV (id codeUv) avec codeUv cleacute3 Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

La question qui permet dafficher la liste des eacutetudiants (numEtu) avec leurs UVs (codeUv) neacutecessite une jointure des cleacutes artificielles Un modegravele sans ces cleacutes artificielles aurait eacuteteacute plus performant pour agrave causereacutepondre agrave cette question puisque toutes les informations se trouvent dans la relation Inscriptions

1 Etu (numEtu) 2 UV (codeUv) 3 Inscriptions (uv=gtUV etu=gtEtu)

Ne soyez pas systeacutematiqueIl est en effet freacutequent dans un projet reacuteel dadopter des cleacutes artificielles presque systeacutematiquement vous pourrez le faire en connaissance de cause quand vous aurez bien compris pourquoi cest inteacuteressant et quand ccedila ne lest pasLes cleacutes artificielles sont inteacuteressantes pour autre chose que les performances (leacutevolutiviteacute par exemple choisissez-les quand vous savez pourquoi)Les cleacutes artificielles ne dispensent pas de rechercher les cleacutes naturelles Les cleacutes artificielles ne sont pas la seule faccedilon doptimiser une base de donneacutees (indexation deacutenormalisation)

53 Bibliographie commenteacutee sur la modeacutelisation UML

Il existe de nombreux outils de modeacutelisation UML On pourra citer

logiciel Open Source et multi-plateformes facile dusage (qui marche neacuteanmoins mieux sur Linux Dia

que sur Windows)

(version gratuite)Objecteering

Cleacutes artificielles et optimisation est-il toujours plus performant dutiliser des cleacutes artificielles

Conseil

Compleacutement Outils de modeacutelisation UML

Etu (id numEtu) avec numEtu cleacute

UV (id codeUv) avec codeUv cleacute

Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

Etu (numEtu)

UV (codeUv)

Inscriptions (uv=gtUV etu=gtEtu)

Bibliographie commenteacutee sur la modeacutelisation UML

28

- - - - - -

- - - - - -

Agrave voir eacutegalement en Open Source ou (non testeacute par lauteur)ArgoUML EclipseUML

UML2 en action

Pour un aperccedilu plus deacutetailleacute des possibiliteacutes dexpression du diagramme de classe UML lire le chapitre 7 Deacuteveloppement du modegravele statique (pages 133 agrave 163)

On pourra notamment y trouver

Lassociation dagreacutegationLes proprieacuteteacutes dassociationLexpression de rocircles dans les associationsLes attributs de classeLes qualificatifsLes opeacuterations (ou meacutethodes)

Le chapitre donne de plus des conseils meacutethodologiques pour la conception (voir en particulier la synthegravese page 163)

On pourra eacutegalement y trouver

Des principes de choix de modeacutelisation entre attributs et classes et sur la segmentation des classesDes principes de seacutelection des attributs (redondance avec les associations avec les classes etc)Des principes de seacutelection des associationsDes principes de choix de cardinaliteacute (notamment pour la gestion dhistorisation)Des principes de seacutelection des relations de geacuteneacuteralisation (heacuteritage)Des principes dintroduction de meacutetaclasses (type)s

U M L e n Franccedilais

Une tregraves bonne reacutefeacuterence en ligne sur la modeacutelisation UML avec des cours des liens vers la norme etc

Le contenu deacutepasse tregraves largement lusage dUML pour la modeacutelisation de BD (et ne fait dailleurs pas de reacutefeacuterence preacutecise agrave ce sous-ensemble particulier)

On pourra consulter en particulier le chapitre sur les diagrammes de classe httpumlfreefrcoursi-p14html

UML en 5 eacutetapes

On consultera en particulier le tutoriel sur les diagrammes de classe httpdeveloppeurjournaldunetcomtutorielcpt010607cpt_umlintroshtml

Cinq petits conseils pour un scheacutema UML efficace

Compleacutement Modeacutelisation UML

Compleacutement Reacutefeacuterence UML en ligne

Compleacutement Tutoriel sur la modeacutelisation UML

Compleacutement Conseils

Synthegravese Les diagrammes de modeacutelisation conceptuelle

29

-

-

- -

-

- -

-

-

- -

-

- - - -

-

-

(chapitre 3)UML2 par la pratique

Des explications exemples et eacutetudes de cas

54 Synthegravese Les diagrammes de modeacutelisation conceptuelle

Un modegravele conceptuel peut ecirctre repreacutesenteacute sous forme de diagramme E-A ou sous forme de diagramme de classe UML

Classe ou Entiteacute

Attribut ou Proprieacuteteacute

TypeacuteMulti-valueacuteComposeacuteDeacuteriveacute

Meacutethode

ParamegravetresValeur de retour

Association

Association

VerbeCardinaliteacute

Heacuteritage

Heacuteritage dattributsHeacuteritage de meacutethodes

Composition (ou entiteacute faible)

Cardinaliteacute

Compleacutement Pratique

Exercices

30

-

-

-

-

-

-

-

1 2

1

1 Exercice Lab III[20 min]

Description du problegraveme

Un laboratoire souhaite geacuterer les meacutedicaments quil conccediloit

Un meacutedicament est deacutecrit par un nom qui permet de lidentifier En effet il nexiste pas deux meacutedicaments avec le mecircme nom Un meacutedicament comporte une description courte en franccedilais ainsi quune description longue en latin On gegravere aussi le conditionnement du meacutedicament cest agrave dire le nombre de pilules par boicircte (qui est un nombre entier)Agrave chaque meacutedicament on associe une liste deacutedieacutee de contre-indications geacuteneacuteralement plusieurs parfois aucune Les contre-indications sont trieacutees par ordre dimportance Lordre est total est strict pour un meacutedicament donc chaque contre-indication possegravede une importance et il nexiste pas deux contre-indications associeacutees au mecircme meacutedicament avec la mecircme importanceTout meacutedicament possegravede au moins un composant souvent plusieurs Un composant est identifieacute par un code unique et possegravede un intituleacute Tout composant peut intervenir dans la fabrication de plusieurs meacutedicaments Il existe des composants qui ne sont pas utiliseacutes pour fabriquer des meacutedicaments et que lon veut quand mecircme geacuterer

Donneacutees de test

Afin de mateacuterialiser notre base de donneacutees nous obtenons les descriptions suivantes

Le a pour description courte et pour description longue Chourix Meacutedicament contre la chute des chouxlaquo raquoVivamus fermentum semper porta Nunc diam velit adipiscing ut tristique vitae sagittis vel odio laquo

Il est conditionneacute en boicircte de 13Maecenas convallis ullamcorper ultricies Curabitur ornare raquoSes contre-indications sont

Le Chourix ne doit jamais ecirctre pris apregraves minuitLe Chourix ne doit jamais ecirctre mis au contact avec de leau

Ses composants sont le et le HG79 SN50Le a pour description courte et pour Tropas Meacutedicament contre les dysfonctionnements intellectuelslaquo raquodescription longue Suspendisse lectus leo consectetur in tempor sit amet placerat quis neque Etiam laquo

Il est conditionneacute en boicircte de 42luctus porttitor lorem sed suscipit est rutrum non raquoSes contre-indications sont

Le Tropas doit ecirctre gardeacute agrave labri de la lumiegravere du soleil

Son unique composant est le HG79Les composants existants sont

HG79 Vif-argent alleacutegeacute

ExercicesII

Exercice Eacutetudiants et UVs (introduction)

31

- - -

- - HG81 Vif-argent alourdi

SN50 Pur eacutetain

Question 1

Question 2

Question 3

2 Exercice Eacutetudiants et UVs (introduction)[20 min]

On dispose du scheacutema UML ci-apregraves qui deacutecrit des eacutetudiants des UV les notes obtenues par les eacutetudiants agrave ces UV et les diplocircmes dorigine de ces eacutetudiants

Eacutetudiants et UVs

key deacutesigne des cleacutes candidates ici toutes les cleacutes ne sont composeacutees que dun seul attributlocal key deacutesigne une cleacute localeun semestre est de la forme PYYYY ou AYYYY (ougrave YYYY deacutesigneacute une anneacutee sur 4 chiffre) exemple A2013 P2014

Rappel Notion de cleacute locale dans classes dassociation (cf p49)

Effectuez le modegravele conceptuel en UML de ce problegraveme

Indices

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans deacutedieacuteeles donneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition

[ ]solution ndeg4 [ ] p56

En mobilisant les regravegles adeacutequates proposer un modegravele logique de donneacutees correspondant en relationnel Le repeacuterage des domaines et des cleacutes est obligatoire

[ ]solution ndeg5 [ ] p57

Dessiner des tableaux remplis avec les donneacutees fournies en exemple afin de montrer que le modegravele fonctionne selon le besoin exprimeacute initialement On pourra mettre le premier mot seulement des descriptions pour gagner du temps

[ ]solution ndeg6 [ ] p57

Exercice Super-heacuteros relationnels I

32

-

-

Question

3 Exercice Super-heacuteros relationnels I[20 min]

La gamme de super-heacuteros GARVEL veut reacutealiser la base de donneacutees de leurs figurines articuleacutees La socieacuteteacute a fait reacutealiser un modegravele UML qui doit servir de point de deacutepart agrave la mise en œuvre

Modegravele UML Figurines GARVEL

Question

4 Exercice Objets Numeacuteriques Libres[30 min]

Lassociation ONL (Objets Numeacuteriques Libres) est une association de promotion des logiciels libres Elle souhaite exposer sur un site Internet une liste de logiciels libres Ce site sera adosseacute agrave une base de donneacutees relationnelle ou relationnel-objet La premiegravere eacutetape de sa deacutemarche est de reacutealiser un modegravele conceptuel repreacutesentant ce quelle souhaite faire

La base de donneacutees permet de geacuterer des applicationsLes applications sont identifieacutees par leur nom (LibreOffice Gimp) et leur version (10 21) et comportent une description courte et une URL Tous les attributs sont obligatoires Chaque application a une URL uniqueLa base de donneacutees permet de geacuterer des librairies

Traduire le scheacutema en modegravele logique relationnel ( )MLD1

On choisira obligatoirement les cleacutes primaires parmi celles neacutecessitant le plus petit nombre de bits possible pour leur codage

[ ]solution ndeg7 [ ] p57

Transformer le modegravele UML en modegravele relationnel (justifier les passages non triviaux en particulier la relation dheacuteritage)

[ ]solution ndeg8 [ ] p58

Exercice Objets Numeacuteriques Libres

33

-

-

-

-

-

-

-

-

-

-

-

-

Les librairies sont des logiciels mais pas des applications Elles ont les mecircmes attributs que les applications (nom version description courte URL) mais les URL ne sont pas neacutecessairement uniques Les applications peuvent deacutependre de librairies ou dautres applications et les librairies peuvent deacutependre dautres librairies (mais pas dune application)La base de donneacutees permet de geacuterer des composantsLes composants sont inteacutegreacutes agrave une application ou librairie Les composants ont un code interne agrave lapplication ou la librairie quil servent une version et une description courte et une URL Le code et le numeacutero de version permettent didentifier localement le composant au sein de la librairie ou de lapplication la description courte et lURL sont optionnellesLa base de donneacutees permet de geacuterer des licencesLes applications librairies et composants sont attacheacutes agrave une ou plusieurs licences identifieacutees par leur nom (GPL MPL) leur version et leur langue et comportant le texte inteacutegral de la licence Les versions des logiciels et licences sont de type numeacutero de licence majeur point numeacutero de licence mineur comme 10 ou 22La base de donneacutees permet de geacuterer des cateacutegoriesChaque logiciel est rangeacute dans une cateacutegorie principale et plusieurs cateacutegories secondaires Exemple de cateacutegories bureautique dessin multimeacutedia physique

Exemple (factice) de donneacutees

Applications

Scenari 41 une chaicircne eacuteditoriale XML httpscenariorg deacutepend de Libreoffice 43 et de ImageMagick 68Libreoffice 43 une suite bureautique WYSIWYG httplibreofficeorg

Librairie

ImageMagick 68 permet de creacuteer de convertir de modifier et dafficher des images http imagemagickorg

Composant

impng 02 est un composant de ImageMagick 68 permet de compresser une image au format PNG

Toutes ces applications librairies et composants sont disponibles sous une licence LGPL 30 et GPL 30 franccedilaisesToutes ces applications et librairies sont rangeacutees dans la cateacutegorie principale document Scenari est rangeacute dans la cateacutegorie secondaire Eacutedition WYSIWYM Libreoffice dans la cateacutegorie secondaire Bureautique ImageMagick dans la cateacutegorie secondaire Multimeacutedia

Question

Reacutealiser un MCD en UML[ ]solution ndeg9 [ ] p58

Devoirs

34

1 Exercice Arbre de scegravene 3D[30 minutes]

On souhaite pouvoir geacuterer les diffeacuterents eacuteleacutements composant des scegravenes 3D dans une base de donneacutees Une scegravene contient des objets qui eux-mecircmes peuvent appartenir agrave plusieurs scegravenes (au moins une) mais il ne peut y avoir plusieurs fois le mecircme objet dans une mecircme scegravene Dans chaque scegravene les objets peuvent ecirctre visibles ou invisibles Les scegravenes et les objets sont identifieacutes de maniegravere unique par un nom Une scegravene peut ecirctre active ou inactive Un objet a comme proprieacuteteacute une position dans lespace repreacutesenteacutee par un vecteur de reacuteels agrave trois composantes (x y z) Les objets sont organiseacutes de maniegravere hieacuterarchique un objet peut ecirctre parent de plusieurs objets et chaque objet peut avoir au plus un parent Des scripts peuvent ecirctre associeacutes agrave un objet ou agrave une scegravene (agrave lun ou agrave lautre mais pas aux deux) Un script est identifieacute de maniegravere unique par un nom et possegravede eacutegalement un attribut permettant de connaicirctre son eacutetat (actif ou inactif) Un personnage est un objet particulier qui possegravede des animations Une animation est relative agrave un personnage et est identifieacutee de maniegravere locale par un nom Agrave un objet est associeacute un maillage et celui-ci peut ecirctre utiliseacute par plusieurs objets Un maillage est identifieacute de maniegravere unique par un nom et est composeacute de plusieurs eacuteleacutements Chaque eacuteleacutement est relatif agrave un maillage et est identifieacute de maniegravere locale par un numeacutero Il existe exactement trois types deacuteleacutement des nœuds des arrecirctes et des faces Une face est deacutelimiteacutee par trois arrecirctes et chaque arrecircte est deacutelimiteacutee par deux nœuds Plusieurs arrecirctes peuvent partager un mecircme nœud et plusieurs faces peuvent partager une mecircme arrecircte Afin deacutevaluer la complexiteacute dune scegravene on souhaite pouvoir calculer le nombre de faces afficheacutees pour une scegravene donneacutee (cest-agrave-dire la somme du nombre de faces du maillage associeacute aux objets visibles de la scegravene) Un maillage possegravede plusieurs mateacuteriaux identifieacutes de maniegravere unique par un nom Un mateacuteriau peut ecirctre associeacute agrave plusieurs maillages Un mateacuteriau est caracteacuteriseacute par une couleur deacutefinie par un vecteur dentiers agrave quatre composantes rouge vert bleu alpha Un mateacuteriau peut posseacuteder une texture et celle-ci peut ecirctre utiliseacutee par plusieurs mateacuteriaux Une texture est identifieacutee de maniegravere unique par un nom et possegravede comme attribut une image

Question 1

Question 2

DevoirsIII

Proposez une clarification de ce problegraveme On pourra reclasser les informations par grande cateacutegorie scegravene objets scripts

Eacutetablissez un modegravele conceptuel en UML de ce problegraveme

Compleacutement Exercices de modeacutelisation suppleacutementaire

35

1 Exercice Appartements agrave louer[30 min]

Une agence dimmobilier (ventes et locations) veut geacuterer son parc dappartements dans une base de donneacutees Chaque appartement possegravede plusieurs piegraveces qui peuvent ecirctre des piegraveces dhabitation des piegraveces de rangement ou des commoditeacutes

Chaque piegravece a une superficie un nombre de prises eacutelectriques et des meubles Pour ces derniers on veut enregistrer le nom du modegravele et le type (chaise lit four etc) Rien nempecircche quune piegravece comporte plusieurs meubles identiques (par exemple plusieurs chaises PIN IQUEA) Les piegraveces dhabitation ont une ou plusieurs fenecirctres les piegraveces de rangement ont une ou plusieurs eacutetagegraveres et une surface de rangement utile totale On veut aussi savoir dans quelles piegraveces de rangement se situent les tableaux eacutelectriques de lappartement Finalement les piegraveces commoditeacutes peuvent ecirctre de trois types cuisine toilette ou salle de bain

Lagence veut aussi enregistrer les portes entre les diffeacuterentes piegraveces Une porte peut ecirctre agrave simple battant double battant coulissante ou une simple ouverture

Chaque appartement a une adresse une superficie totale (qui est la somme des superficies des piegraveces) et un type qui est la lettre T suivie du nombre de piegraveces dhabitation de lappartement Pour un appartement donneacute chaque piegravece est identifieacutee par un numeacutero (commenccedilant au numeacutero 1)

Lagence veut eacutegalement enregistrer le quartier ougrave se trouve lappartement auquel est lieacute un prix par megravetre carreacute Finalement elle veut garder un historique de lhistoire de lappartement les peacuteriodes pour lesquelles il est libre occupeacute en travaux ou vendu

Question

2 Exercice Objectifs[40 min]

Vous prenez la preacutesidence de lassociation Objectifs dont lobjet est daider ses eacutetudiants membres agrave mener des projets dans le cadre de leurs eacutetudes

Compleacutement Exercices de modeacutelisation suppleacutementaire

IV

Reacutealisez le diagramme UML reacutepondant aux besoins de cette agence[ ]solution ndeg10 [ ] p59

Exercice Objectifs

36

- - -

-

-

- - -

Vous constatez en arrivant dans lassociation que personne ne sait exactement quels sont les projets en cours ni qui fait quoi dans les projets Vous ne parvenez pas non plus agrave obtenir une liste exacte des partenaires sur lesquels lassociation peut compter La seule chose sur laquelle vous parvenez agrave mettre la main est un fichier tableur vaguement agrave jour

Vous deacutecidez quil est plus que temps de mettre en place une base de donneacutees afin dassurer la bonne gestion des informations les plus importantes pour lassociation Vous vous attachez pour cela agrave reacutealiser une analyse des besoins

Analysez les documents ci-apregraves

Etat des projets

Eacutetat des projets de lassociation Objectifs

Recueil de besoins

Agrave partir de leacutetude du fonctionnement actuel de lassociation vous relevez les choses importantes agrave geacuterer suivantes

Les membres de lassociation geacuteneacuteralement identifieacutes par leur preacutenomLes projets geacutereacutes par lassociation avec des dates de deacutebut et de fin preacutecises et un chef de projetLe deacutetail des tacircches de chaque projet avec leurs dates de deacutebut et de fin aussi et la liste de tous les membres qui y participentLa liste des partenaires des projets avec leur rocircle preacutecis pour chacun des projets auxquels ils participent

Afin de mieux geacuterer les attributions des projets il serait eacutegalement inteacuteressant de creacuteer une liste des speacutecialiteacutes correspondant agrave ce qui ce fait dans lassociation et daffecter une speacutecialiteacute agrave chaque membre ainsi quune agrave chaque projet pour voir si ce sont bien les membres les mieux adapteacutes qui travaille sur les projets

Recueil de donneacutees

Les discussions avec les anciens membres de lassociation vous apprennent les choses suivantes

Lassociation a termineacute de geacuterer les trois projets Comeacutedie Musicale geacutereacutee par Nathalie sur les trois premiers mois du semestre dautomne 1001 Science en fecircte geacutereacutee par Pierre sur tout le semestre de printemps 1003 et Nuit du picolo geacutereacutee par Julien en novembre 1001Les speacutecialiteacutes recenseacutees pour le moment sont Ville Universiteacute Sport Entreprise Culture InternationalIl faut au moins dix membres agrave lassociation (sinon elle ferme) recruter ceux qui manquentAidez lassociation agrave diviser ses projets en tacircches

Exercice Objectifs

37

- Les partenaires suivants aident ou ont aideacute lassociation la mairie pour la comeacutedie musicale et la science en fecircte qui apporte un soutien financier le ministegravere de la culture qui apporte son soutien logistique agrave la science en fecircte lassociation des commerccedilants de la ville qui apporte son soutien publicitaire agrave la comeacutedie musicale 1664 qui offre ses biegraveres agrave moitieacute prix pour la nuit du Picolo

Question 1

Question 2

Question 3

Afin de preacuteparer une analyse des besoins sommaire listez les donneacutees que vous devrez geacuterer agrave laide des documents et recueils de discussion agrave votre disposition Faites des hypothegraveses lorsque les donneacutees sont incomplegravetes ou incoheacuterentes

[ ]solution ndeg11 [ ] p59

Reacutealiser le MCD en UML et en E-A agrave partir des donneacutees preacutepareacutees dans la question preacuteceacutedente[ ]solution ndeg12 [ ] p60

Reacutealiser le MLD en relationnel en traduisant votre MCD[ ]solution ndeg13 [ ] p61

Contenus annexes

38Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

- - -

gt Attributs

Un attribut est une information eacuteleacutementaire qui caracteacuterise une classe et dont la valeur deacutepend de lobjet instancieacute

Le domaine des valeurs que peut prendre lattribut est fixeacute a prioriUn attribut est typeacute

Il peut prendre plusieurs valeurs distinctes dans son domaineUn attribut peut ecirctre multivalueacute Sa valeur alors est une fonction sur dautres attributs de la classeUn attribut peut ecirctre deacuteriveacute

(ou composite) Il joue alors le rocircle dun groupe dattributs (par Un attribut peut ecirctre composeacuteexemple une adresse peut ecirctre un attribut composeacute des attributs numeacutero type de voie nom de la voie) Cette notion renvoie agrave la notion de variable de type dans les langages de Record

programmation classiques

En UML on preacutefegravere lusage de meacutethodes aux attributs deacuteriveacutes On utilisera toujours des meacutethodes degraves que la valeur de lattribut deacuteriveacute deacutepend dautres attributs exteacuterieurs agrave sa classeEn UML on preacutefegravere lusage de compositions aux attributs composeacutes On utilisera toujours des compositions pour les attributs composeacutes et multivalueacutes

1 attributtype2 attribut_multivalueacute[nbMinValeursnbMaxValeurs]type3 attribut_deacuteriveacutetype4 attribut_composeacute5   - sous-attribut1type6   - sous-attribut2type7   -

Contenus annexes

Deacutefinition Attribut

Attention On utilise peu les attributs deacuteriveacutes et composeacutes en UML

Syntaxe

attributtype

attribut_multivalueacute[nbMinValeursnbMaxValeurs]type

attribut_deacuteriveacutetype

attribut_composeacute

  - sous-attribut1type

  - sous-attribut2type

  -

Contenus annexes

39Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Repreacutesentation dattributs en UML

Dans cet exemple les attributs Nom Preacutenom sont de type lun de 20 caractegraveres et lautre de 10 stringtandis que DateNaissance est de type et Age de type Preacutenom est un attribut multivalueacute ici date integerune personne peut avoir de 1 agrave 3 preacutenoms Age est un attribut deacuteriveacute il est calculeacute par une fonction sur DateNaissance

Meacutethodes (cf p39)

Composition (cf p5)

gt Meacutethodes

Une meacutethode (ou opeacuteration) est une fonction associeacutee agrave une classe dobjet qui permet dagir sur les objets de la classe ou qui permet agrave ces objets de renvoyer des valeurs (calculeacutees en fonction de paramegravetres)

1 methode(paramegravetres)type

Pour la modeacutelisation des bases de donneacutees les meacutethodes sont surtout utiliseacutees pour repreacutesenter des donneacutees calculeacutees (agrave linstar des attributs deacuteriveacutees) ou pour mettre en exergue des fonctions importantes du systegraveme cible Seules les meacutethodes les plus importantes sont repreacutesenteacutees lapproche est moins systeacutematique quen modeacutelisation objet par exemple

Lors de la transformation du modegravele conceptuel UML en modegravele logique relationnel les meacutethodes ne Leur repeacuterage au niveau conceptuel sert donc surtout daide-seront geacuteneacuteralement pas impleacutementeacutees

meacutemoire pour limpleacutementation au niveau applicatif

Exemple La classe Personne

Compleacutement Voir aussi

Deacutefinition Meacutethode

Syntaxe

Remarque Meacutethodes et modeacutelisation de BD

Remarque Meacutethodes relationnel relationnel-objet

methode(paramegravetres)type

Contenus annexes

40Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Au contraire un modegravele logique relationnel-objet permettra limpleacutementation de meacutethodes directement associeacutees agrave des tables Leur repeacuterage au niveau conceptuel est donc encore plus important

Transformation des meacutethodes par des vues (cf p40)

gt Transformation des meacutethodes par des vues

Lorsquune meacutethode est speacutecifieacutee sur un diagramme UML pour une classe C si cette meacutethode est une fonction relationnelle (elle renvoie une unique valeur et elle peut ecirctre reacutesolue par une requecircte SQL) alors on creacutee une vue qui reprend les attributs de la classe C et ajoute des colonnes calculeacutees pour les meacutethodes

Les attributs deacuteriveacutes eacutetant apparenteacutes agrave des meacutethodes ils peuvent eacutegalement ecirctre geacutereacutes par des vues

gt Classe dassociation

On utilise la notation des classes dassociation lorsque lon souhaite ajouter des proprieacuteteacutes agrave une association

Notation dune classe dassociation en UML

On reacuteserve en geacuteneacuteral les classes dassociation aux associations NM

Il est toujours possible de reacuteduire une classe dassociation sur une association 1N en migrant ses attributs sur la classe cocircteacute N et cest en geacuteneacuteral plus lisible ainsi

Compleacutement

Meacutethode

Remarque Attributs deacuteriveacutes

Deacutefinition Classe dassociation

Syntaxe Notation dune classe dassociation en UML

Meacutethode

Contenus annexes

41Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

-

Emplois

Selon le standard UML une classe dassociation est une classe et agrave ce titre elle peut ecirctre mobiliseacutee dans dautres associations ou dans des heacuteritages Nous deacuteconseillons neacuteanmoins ces notations qui ont tendance agrave complexifier la lecture et la transformation du diagramme

Nous conseillons donc de ne jamais associer une classe dassociation

gt Transformation des attributs

Pour chaque attribut eacuteleacutementaire et monovalueacute dune classe

on creacutee un attribut correspondant

Attribut

Classe1(ab)

Pour chaque attribut composite comprenant N sous-attributs dune classe

on creacutee N attributs correspondantsdont les noms sont la concateacutenation du nom de lattribut composite avec celui du sous-attribut

Exemple Exemple de classe dassociation

Conseil

Meacutethode Attributs simples

Meacutethode Attributs composites

Contenus annexes

42Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- - - -

Attribut composeacute

Classe1(ab_b1b_b2)

Pour chaque attribut multivalueacute b dune classe C

on creacutee une nouvelle relation RBqui comprend un attribut monovalueacute correspondant agrave bplus la cleacute de la relation repreacutesentant C la cleacute de RB est la concateacutenation des deux attributs

Attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Dans le cas ougrave le nombre maximum de est fini et petit on peut eacutegalement adopter la transformation b

suivante Classe1(ab1b2b3b4b5b6b7b8b9b10)

Si le nombre dattributs est infini ( ) cest impossible sil est trop grand ce nest pas souhaitableb[1]

On combine les regravegles eacutenonceacutees pour les attributs composeacutes et pour les attributs multivalueacutes

Attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Transformation des compositions (cf p42)

Meacutethode Attributs multivalueacutes

Meacutethode Attributs multivalueacutes (meacutethode alternative)

Meacutethode Attributs composeacutes multivalueacutes

Rappel Voir aussi

Contenus annexes

43Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

gt Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Compleacutement Attributs multivalueacutes et composeacutes

Contenus annexes

44Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

Rappel Voir aussi

Rappel

Meacutethode

Contenus annexes

45Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p48)

gt Transformation des associations 1N

Pour chaque association binaire de type 1N

on ajoute agrave la relation cocircteacute N une cleacute eacutetrangegravere vers la relation cocircteacute 1

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Meacutethode

Contenus annexes

46Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Association 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Contrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p46)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

R1

Compleacutement

Rappel

Meacutethode

Contenus annexes

47Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p47)

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Deacutefinition Projection

Contenus annexes

48Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Deacutefinition Projection

Contenus annexes

49Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Transformation des classes dassociation

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de lassociation NM

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Meacutethode Classe dassociation NM

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Exercice

16

26 ExerciceQuel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

[ ]solution ndeg2 [ ] p53

Exercice

17

27 ExerciceSoit le scheacutema UML suivant

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

[ ]solution ndeg3 [ ] p54

Modeacutelisation avanceacutee des associations 11 en relationnel

18

-

- -

-

-

3 Modeacutelisation avanceacutee des associations 11 en relationnelObjectifs

Savoir faire le passage dun scheacutema conceptuel UML agrave un scheacutema relationnel

Connaicirctre les choix possibles pour le cas de lassociation 11 et savoir faire le meilleur choix

Il existe des formulations conceptuelles en UML qui sont plus deacutelicates agrave traduire au niveau logique en relationnel comme lassociation 11 Ces cas requiegraverent un choix eacuteclaireacute de la part du concepteur

31 Transformation des associations 11 (approche geacuteneacuterale)

Il existe deux solutions pour transformer une association 11

Avec deux relations on traite lassociation 11 comme une association 1N puis lon ajoute une contrainte UNIQUE sur la cleacute eacutetrangegravere pour limiter la cardinaliteacute maximale agrave 1 Avec une seule relation on fusionne les deux classes en une seule relation

Association 11

Une des deux relations est choisie pour porter la cleacute eacutetrangegravere on ajoute les contraintes ou (cleacute candidate) sur la cleacute eacutetrangegravere et si neacutecessaire une UNIQUE KEY

contrainte imposant linstanciation simultaneacutee des deux relations

Classe1(abc=gtClasse2) avec c UNIQUE ou KEY

Classe2(cd)

ou

Classe1(ab)

Classe2(cda=gtClasse1) avec a UNIQUE ou KEY

On creacuteeacute une seule relation contenant lensemble des attributs des deux classes

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Meacutethode Avec deux relations (cleacute eacutetrangegravere)

Meacutethode Avec une relation (fusion)

Transformation des associations 1111

19

- -

- - - - - -

- on choisit une cleacute parmi les cleacutes candidates

Classe12(abcd) avec c UNIQUE ou KEY

ou

Classe21(cdab) avec a UNIQUE ou KEY

Ce choix entre les deux meacutethodes sera conduit par une appreacuteciation du rapport entre

La complexiteacute introduite par le fait davoir deux relations lagrave ou une suffitLa pertinence de la seacuteparation des deux relations dun point de vue seacutemantiqueLes pertes de performance dues agrave leacuteclatement des relationsLes pertes de performance dues au fait davoir une grande relationLes questions de seacutecuriteacute et de sucircreteacute factoriseacutees ou non au niveau des deux relations

Dans le cas dune association 1111 il faudra ajouter une contrainte compleacutementaire

Transformation des associations 1111 (cf p19)

32 Transformation des associations 1111

Le plus souvent cest meacutethode par des relations qui est la plus adapteacutee agrave ce casfusionLorsquelle ne lest pas et que lon choisit deux relations il faut ajouter une contrainte dynamique qui controcirclera que les deux relations sont bien toujours instancieacutees ensembles Notons que la cleacute eacutetrangegravere peut ecirctre choisie comme cleacute primaire

Association 11

Classe12(abcd) avec c KEY

ou

Classe21(cdab) avec a KEY

ou

Classe1(abc=gtClasse2) avec c KEY

Classe2(cd)

Contrainte PROJECTION(Classe1c) = PROJECTION(Classe2c)

ou

Classe1(ab)

Remarque Fusion des relations dans le cas de la traduction de lassociation 11

Compleacutement

Meacutethode Association 1111

Transformation des associations 0111

20

-

-

-

-

Classe2(cda=gtClasse1) avec a KEY

Contrainte PROJECTION(Classe1a) = PROJECTION(Classe2a)

La contrainte dynamique exprimeacutee ici suit le mecircme principe que pour les association 1NContrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p44)

33 Transformation des associations 0111

Le plus souvent cest la meacutethode par les deux relations qui est la plus adapteacutee on choisira toujours la relation cocircteacute 01 pour ecirctre reacutefeacuterenccedilante

Il est possible dutiliser la fusion dans ce cas les cleacutes cocircteacute 01 deviennent des attributs il ne UNIQUE

peuvent plus ecirctre cleacutes pouvant ecirctre NULL

Association 011

Classe1(abc=gtClasse2) avec c KEY

Classe2(cd)

ou

Classe12(cdab) avec a UNIQUE

34 Transformation des associations 0101

On choisit la solution avec deux relations dun cocircteacute ou de lautre la cleacute eacutetrangegravere est associeacute agrave la contrainte ce nest pas une cleacute car elle peut ecirctre nulleUNIQUE

Il nest pas souhaitable de choisir la fusion lune des deux relations pouvant ecirctre nulle on ne pourrait plus trouver de cleacute naturelle

Association 0101

Classe1(abc=gtClasse2) avec c UNIQUE

Classe2(cd)

ou

Compleacutement Contrainte dynamique

Meacutethode Association 0111

Meacutethode Association 0101

Exemple de choix pour une relation 11

21

-

- -

-

-

Classe1(ab)

Classe2(cda=gtClasse1) avec a UNIQUE

35 Exemple de choix pour une relation 11

Soit deux entiteacutes homme et femme et une association mariage de cardinaliteacute 1111 entre ces deux entiteacutes (hommes et femmes sont donc obligatoirement marieacutes)Les entiteacutes homme et femme sont identifieacutees par un attribut nom (dans ce modegravele chaque personne a un nom unique on pourrait remplacer le nom par un identifiant comme le numeacutero de seacutecuriteacute social ou par une cleacute artificielle pour ecirctre plus proche de la reacutealiteacute)

Bien que de type 1111 le choix de la fusion nest pas tregraves opportun car il sagit bien dobjets distincts que lon veut modeacuteliser

On choisira donc plutocirct la repreacutesentation avec deux relationsLa cleacute eacutetrangegravere pourra ecirctre du cocircteacute homme ou femme mecircme si la pratique dominante nous incite agrave la mettre du cocircteacute femmeOn pourra eacutegalement deacutecider de prendre la cleacute eacutetrangegravere comme cleacute primaire

1 homme (nom)2 femme (mariage=gthomme nom) avec nom KEY3 Contrainte PROJ(hommenom) = PROJ(femmemariage)

Si lassociation avait eacuteteacute de cardinaliteacute 0101 (certains hommes et femmes ne sont pas marieacutes) un choix similaire se serait imposeacute avec limpossibiliteacute de choisir la cleacute eacutetrangegravere comme cleacute primaire celle-ci pouvant ecirctre nulle et neacutetant donc plus candidate

1 homme (nom)2 femme (nom mariage=gthomme) avec mariage UNIQUE

4 Autres eacuteleacutements utiles en UML packages et steacutereacuteotypesObjectifs

Maicirctriser le diagramme de classe UML dans le cas de la conception de BD

41 Paquetages

Les paquetages (plus communeacutement appeleacutes ) sont des eacuteleacutements servant agrave organiser un modegravelepackage

Ils sont particuliegraverement utiles degraves que le modegravele comporte de nombreuses classes et que celles-ci peuvent ecirctre trieacutees selon plusieurs aspects structurants

Exemple

Exemple

Deacutefinition Package

homme (nom)

femme (mariage=gthomme nom) avec nom KEY

Contrainte PROJ(hommenom) = PROJ(femmemariage)

homme (nom)

femme (nom mariage=gthomme) avec mariage UNIQUE

Steacutereacuteotype

22

Notation des paquetages en UML

Exemple dutilisation des packages

On repreacutesente chaque classe au sein dun Il est alors possible de faire une preacutesentation globale du packagemodegravele (tous les ) partielle (une partie des ) ou centreacutee sur un seul packages packages package

Pour une repreacutesentation partielle ou centreacutee sur un on repreacutesente les concerneacutes avec leurs package packagesclasses propres ainsi que toutes les classes lieacutees des autres packages (et seulement celles-ci)

Preacutesentation partielle du modegravele centreacutee sur un package

Syntaxe

Exemple

Meacutethode

Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt

23

42 Steacutereacuteotype

Un steacutereacuteotype UML est une syntaxe permettant dajouter de la seacutemantique agrave la modeacutelisation des classes Il permet de deacutefinir des afin de regrouper conceptuellement un ensemble de classes (agrave linstar types de classedune classe qui permet de regrouper conceptuellement un ensemble dobjets)

Cest une meacutecanique de meacuteta-modeacutelisation elle permet deacutetendre le meacuteta-modegravele UML cest agrave dire le modegravele conceptuel du modegravele conceptuel

Un meacuteta-modegravele est le modegravele dun modegravele Par exemple le meacuteta-modegravele UML comprend les concepts de classe attribut association cardinaliteacute composition agreacutegation contraintes annotations On mobilise ces concepts (on les instancie) pour exprimer un modegravele particulier suivant le formalisme UML

Les steacutereacuteotypes permettent donc dajouter au meacuteta-modegravele UML standard celui que tout le monde utilise des concepts locaux pour enrichir le langage de modeacutelisation que lon utilise pour reacutealiser des modegraveles

Notation dun steacutereacuteotype en UML

Un steacutereacuteotype speacutecifique enrichit le meacuteta-modegravele UML mais selon une seacutemantique qui est propre agrave celui qui la poseacute non standard donc La conseacutequence est que pour un tiers linterpreacutetation du steacutereacuteotype nest plus normaliseacutee et sera potentiellement plus facilement erroneacutee Il convient donc de ne pas abuser de cette meacutecanique

Deux ou trois steacutereacuteotypes speacutecifiques correctement deacutefinis sont faciles agrave transmettre plusieurs dizaines repreacutesenteraient un nouveau langage complet agrave apprendre pour le lecteur du modegravele

Il existe des steacutereacuteotypes fournit en standard par UML ou communeacutement utiliseacutes par les modeacutelisateurs Lavantage est quil seront compris plus largement au mecircme titre que le reste du meacuteta-modegravele (ils ont une valeur de standard)

43 Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt

Deacutefinition Steacutereacuteotype UML

Deacutefinition Meacuteta-modegravele

Syntaxe

Conseil Steacutereacuteotypes speacutecifiques et steacutereacuteotypes standard

Syntaxe

Type utilisateurs steacutereacuteotype ltltdataTypegtgt

24

Steacutereacuteotype UML permettant dexprimer une eacutenumeacuteration

Exemple de modeacutelisation UML deacutenumeacuteration

44 Type utilisateurs steacutereacuteotype ltltdataTypegtgt

Les types utilisateurs permettent de deacutefinir des types complexes propres en extension des types primaires (entier chaicircne date)

Steacutereacuteotype dataType

Steacutereacuteotype dataType (exemple)

Cette modeacutelisation est eacutequivalente agrave la modeacutelisation des attributs composeacutes directement dans la classe principale Cest une repreacutesentation plus standard en UML

Exemple

Syntaxe

Exemple

Meacutethode Attributs composeacutes

Synthegravese sur la modalisation UML et relationnelle

25

Quelques eacuteleacutements de stylistique UML

26

-

- -

-

-

-

- - -

- - - -

1

2

3

5 Synthegravese sur la modalisation UML et relationnelle51 Quelques eacuteleacutements de stylistique UML

Toutes les associations doivent ecirctre nommeacutees (sauf composition heacuteritage agreacutegation)Ne pas utiliser de nom geacuteneacuterique pour les Classes comme Entiteacute Classe Objet TrucEacuteviter les noms geacuteneacuteriques pour les associations (comme est associeacute agrave)Attention au sens des compositions et agreacutegation le losange est cocircteacute ensemble et noubliez pas les cardinaliteacutes notamment cocircteacute parties

Nutilisez pas le souligneacute ni les en UML pour identifier les cleacutes preacutefeacuterez la contrainte keyPreacutefeacuterez lheacuteritage aux booleacuteens de typage en UMLLes attributs deacuteriveacutes sont reacuteserveacutes aux deacuterivations simples (des attributs de la mecircme classe) si cest plus complexe preacutefeacuterez des meacutethodes (et dans le doute preacutecisez les modes de calcul sur le scheacutema ou dans une note agrave part)Donnez des exemples de contenu lorsque ce nest pas eacutevident (lorsque le couple nom dattribut et type ne permet pas de faccedilon eacutevidente de comprendre de quoi lon parle)Inutile de deacuteclarer le type booleacuteen en UML utilisez-le directement comme un type de donneacutees connu

Si tous vos heacuteritages sont exclusifs notez-le agrave part pour alleacuteger votre scheacutema (et eacuteviter labondance de XOR)

52 Attention aux cleacutes artificielles

en UML on ne pose jamais de cleacutes artificiellesen relationnel on pose rarement des cleacute artificielles sauf dans le cas de cleacutes eacutetrangegraveres vraiment trop compliqueacuteesen SQL on peut poser des cleacutes artificielles si on a une bonne raison (ce nest donc pas systeacutematique et cest agrave justifier)

On najoutera pas de cleacute artificielle en UML au moment de la modeacutelisation conceptuelle des donneacutees

Formellement en UML la notion de cleacute nexiste pas (contrairement agrave l ) elle est ajouteacutee par les E-A

pratiquants des BD

Logiquement on a pas besoin de cette notion en UML les cleacutes artificielles servent en relationnel et dans certains cas uniquementPratiquement cela peut conduire agrave des situations absurdes (comme enlever au niveau logique des cleacutes artificielles ajouteacutees au niveau conceptuel)

Attention

Conseil

Compleacutement

Fondamental

Cleacutes artificielles et niveau conceptuel

Bibliographie commenteacutee sur la modeacutelisation UML

27

-

-

- -

-

- -

-

-

3

4

5

si on fait du non-relationnel on ne doit pas ajouter de cleacutes artificielles dans certains cas (limbrication typiquement) cela arrive mecircme en relationnel avec la transformation de lheacuteritage (dans certains cas toujours)

Meacutethodologiquement il faut se concentrer agrave chaque phase sur ce qui est important donc au moment du MCD on traduit les besoins on repegravere les contraintes explicites (cleacute uniciteacute non nulliteacute) sans se preacuteoccuper de ce qui sera rendu neacutecessaire par la suite par la modeacutelisation relationnelle (les cleacutes eacutetrangegraveres par exemple) ou limpleacutementation (loptimisation par exemple) Agrave chaque jour suffit sa peine Peacutedagogiquement enfin les deacutebutants ont tendance (agrave cause des environnements de conception graphique comme phpMyAdmin notamment) agrave systeacutematiser les cleacutes artificielles en SQL (on pourrait en discuter) mais eacutegalement agrave ne pas faire le travail de recherche des cleacutes naturelles (au niveau relationnel notamment ce qui est une faute de modeacutelisation) Donc au plus tard on fait intervenir les cleacutes artificielles au plus on a une chance de penser aux cleacutes naturelles

Soit le modegravele relationnel suivant

1 Etu (id numEtu) avec numEtu cleacute 2 UV (id codeUv) avec codeUv cleacute3 Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

La question qui permet dafficher la liste des eacutetudiants (numEtu) avec leurs UVs (codeUv) neacutecessite une jointure des cleacutes artificielles Un modegravele sans ces cleacutes artificielles aurait eacuteteacute plus performant pour agrave causereacutepondre agrave cette question puisque toutes les informations se trouvent dans la relation Inscriptions

1 Etu (numEtu) 2 UV (codeUv) 3 Inscriptions (uv=gtUV etu=gtEtu)

Ne soyez pas systeacutematiqueIl est en effet freacutequent dans un projet reacuteel dadopter des cleacutes artificielles presque systeacutematiquement vous pourrez le faire en connaissance de cause quand vous aurez bien compris pourquoi cest inteacuteressant et quand ccedila ne lest pasLes cleacutes artificielles sont inteacuteressantes pour autre chose que les performances (leacutevolutiviteacute par exemple choisissez-les quand vous savez pourquoi)Les cleacutes artificielles ne dispensent pas de rechercher les cleacutes naturelles Les cleacutes artificielles ne sont pas la seule faccedilon doptimiser une base de donneacutees (indexation deacutenormalisation)

53 Bibliographie commenteacutee sur la modeacutelisation UML

Il existe de nombreux outils de modeacutelisation UML On pourra citer

logiciel Open Source et multi-plateformes facile dusage (qui marche neacuteanmoins mieux sur Linux Dia

que sur Windows)

(version gratuite)Objecteering

Cleacutes artificielles et optimisation est-il toujours plus performant dutiliser des cleacutes artificielles

Conseil

Compleacutement Outils de modeacutelisation UML

Etu (id numEtu) avec numEtu cleacute

UV (id codeUv) avec codeUv cleacute

Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

Etu (numEtu)

UV (codeUv)

Inscriptions (uv=gtUV etu=gtEtu)

Bibliographie commenteacutee sur la modeacutelisation UML

28

- - - - - -

- - - - - -

Agrave voir eacutegalement en Open Source ou (non testeacute par lauteur)ArgoUML EclipseUML

UML2 en action

Pour un aperccedilu plus deacutetailleacute des possibiliteacutes dexpression du diagramme de classe UML lire le chapitre 7 Deacuteveloppement du modegravele statique (pages 133 agrave 163)

On pourra notamment y trouver

Lassociation dagreacutegationLes proprieacuteteacutes dassociationLexpression de rocircles dans les associationsLes attributs de classeLes qualificatifsLes opeacuterations (ou meacutethodes)

Le chapitre donne de plus des conseils meacutethodologiques pour la conception (voir en particulier la synthegravese page 163)

On pourra eacutegalement y trouver

Des principes de choix de modeacutelisation entre attributs et classes et sur la segmentation des classesDes principes de seacutelection des attributs (redondance avec les associations avec les classes etc)Des principes de seacutelection des associationsDes principes de choix de cardinaliteacute (notamment pour la gestion dhistorisation)Des principes de seacutelection des relations de geacuteneacuteralisation (heacuteritage)Des principes dintroduction de meacutetaclasses (type)s

U M L e n Franccedilais

Une tregraves bonne reacutefeacuterence en ligne sur la modeacutelisation UML avec des cours des liens vers la norme etc

Le contenu deacutepasse tregraves largement lusage dUML pour la modeacutelisation de BD (et ne fait dailleurs pas de reacutefeacuterence preacutecise agrave ce sous-ensemble particulier)

On pourra consulter en particulier le chapitre sur les diagrammes de classe httpumlfreefrcoursi-p14html

UML en 5 eacutetapes

On consultera en particulier le tutoriel sur les diagrammes de classe httpdeveloppeurjournaldunetcomtutorielcpt010607cpt_umlintroshtml

Cinq petits conseils pour un scheacutema UML efficace

Compleacutement Modeacutelisation UML

Compleacutement Reacutefeacuterence UML en ligne

Compleacutement Tutoriel sur la modeacutelisation UML

Compleacutement Conseils

Synthegravese Les diagrammes de modeacutelisation conceptuelle

29

-

-

- -

-

- -

-

-

- -

-

- - - -

-

-

(chapitre 3)UML2 par la pratique

Des explications exemples et eacutetudes de cas

54 Synthegravese Les diagrammes de modeacutelisation conceptuelle

Un modegravele conceptuel peut ecirctre repreacutesenteacute sous forme de diagramme E-A ou sous forme de diagramme de classe UML

Classe ou Entiteacute

Attribut ou Proprieacuteteacute

TypeacuteMulti-valueacuteComposeacuteDeacuteriveacute

Meacutethode

ParamegravetresValeur de retour

Association

Association

VerbeCardinaliteacute

Heacuteritage

Heacuteritage dattributsHeacuteritage de meacutethodes

Composition (ou entiteacute faible)

Cardinaliteacute

Compleacutement Pratique

Exercices

30

-

-

-

-

-

-

-

1 2

1

1 Exercice Lab III[20 min]

Description du problegraveme

Un laboratoire souhaite geacuterer les meacutedicaments quil conccediloit

Un meacutedicament est deacutecrit par un nom qui permet de lidentifier En effet il nexiste pas deux meacutedicaments avec le mecircme nom Un meacutedicament comporte une description courte en franccedilais ainsi quune description longue en latin On gegravere aussi le conditionnement du meacutedicament cest agrave dire le nombre de pilules par boicircte (qui est un nombre entier)Agrave chaque meacutedicament on associe une liste deacutedieacutee de contre-indications geacuteneacuteralement plusieurs parfois aucune Les contre-indications sont trieacutees par ordre dimportance Lordre est total est strict pour un meacutedicament donc chaque contre-indication possegravede une importance et il nexiste pas deux contre-indications associeacutees au mecircme meacutedicament avec la mecircme importanceTout meacutedicament possegravede au moins un composant souvent plusieurs Un composant est identifieacute par un code unique et possegravede un intituleacute Tout composant peut intervenir dans la fabrication de plusieurs meacutedicaments Il existe des composants qui ne sont pas utiliseacutes pour fabriquer des meacutedicaments et que lon veut quand mecircme geacuterer

Donneacutees de test

Afin de mateacuterialiser notre base de donneacutees nous obtenons les descriptions suivantes

Le a pour description courte et pour description longue Chourix Meacutedicament contre la chute des chouxlaquo raquoVivamus fermentum semper porta Nunc diam velit adipiscing ut tristique vitae sagittis vel odio laquo

Il est conditionneacute en boicircte de 13Maecenas convallis ullamcorper ultricies Curabitur ornare raquoSes contre-indications sont

Le Chourix ne doit jamais ecirctre pris apregraves minuitLe Chourix ne doit jamais ecirctre mis au contact avec de leau

Ses composants sont le et le HG79 SN50Le a pour description courte et pour Tropas Meacutedicament contre les dysfonctionnements intellectuelslaquo raquodescription longue Suspendisse lectus leo consectetur in tempor sit amet placerat quis neque Etiam laquo

Il est conditionneacute en boicircte de 42luctus porttitor lorem sed suscipit est rutrum non raquoSes contre-indications sont

Le Tropas doit ecirctre gardeacute agrave labri de la lumiegravere du soleil

Son unique composant est le HG79Les composants existants sont

HG79 Vif-argent alleacutegeacute

ExercicesII

Exercice Eacutetudiants et UVs (introduction)

31

- - -

- - HG81 Vif-argent alourdi

SN50 Pur eacutetain

Question 1

Question 2

Question 3

2 Exercice Eacutetudiants et UVs (introduction)[20 min]

On dispose du scheacutema UML ci-apregraves qui deacutecrit des eacutetudiants des UV les notes obtenues par les eacutetudiants agrave ces UV et les diplocircmes dorigine de ces eacutetudiants

Eacutetudiants et UVs

key deacutesigne des cleacutes candidates ici toutes les cleacutes ne sont composeacutees que dun seul attributlocal key deacutesigne une cleacute localeun semestre est de la forme PYYYY ou AYYYY (ougrave YYYY deacutesigneacute une anneacutee sur 4 chiffre) exemple A2013 P2014

Rappel Notion de cleacute locale dans classes dassociation (cf p49)

Effectuez le modegravele conceptuel en UML de ce problegraveme

Indices

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans deacutedieacuteeles donneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition

[ ]solution ndeg4 [ ] p56

En mobilisant les regravegles adeacutequates proposer un modegravele logique de donneacutees correspondant en relationnel Le repeacuterage des domaines et des cleacutes est obligatoire

[ ]solution ndeg5 [ ] p57

Dessiner des tableaux remplis avec les donneacutees fournies en exemple afin de montrer que le modegravele fonctionne selon le besoin exprimeacute initialement On pourra mettre le premier mot seulement des descriptions pour gagner du temps

[ ]solution ndeg6 [ ] p57

Exercice Super-heacuteros relationnels I

32

-

-

Question

3 Exercice Super-heacuteros relationnels I[20 min]

La gamme de super-heacuteros GARVEL veut reacutealiser la base de donneacutees de leurs figurines articuleacutees La socieacuteteacute a fait reacutealiser un modegravele UML qui doit servir de point de deacutepart agrave la mise en œuvre

Modegravele UML Figurines GARVEL

Question

4 Exercice Objets Numeacuteriques Libres[30 min]

Lassociation ONL (Objets Numeacuteriques Libres) est une association de promotion des logiciels libres Elle souhaite exposer sur un site Internet une liste de logiciels libres Ce site sera adosseacute agrave une base de donneacutees relationnelle ou relationnel-objet La premiegravere eacutetape de sa deacutemarche est de reacutealiser un modegravele conceptuel repreacutesentant ce quelle souhaite faire

La base de donneacutees permet de geacuterer des applicationsLes applications sont identifieacutees par leur nom (LibreOffice Gimp) et leur version (10 21) et comportent une description courte et une URL Tous les attributs sont obligatoires Chaque application a une URL uniqueLa base de donneacutees permet de geacuterer des librairies

Traduire le scheacutema en modegravele logique relationnel ( )MLD1

On choisira obligatoirement les cleacutes primaires parmi celles neacutecessitant le plus petit nombre de bits possible pour leur codage

[ ]solution ndeg7 [ ] p57

Transformer le modegravele UML en modegravele relationnel (justifier les passages non triviaux en particulier la relation dheacuteritage)

[ ]solution ndeg8 [ ] p58

Exercice Objets Numeacuteriques Libres

33

-

-

-

-

-

-

-

-

-

-

-

-

Les librairies sont des logiciels mais pas des applications Elles ont les mecircmes attributs que les applications (nom version description courte URL) mais les URL ne sont pas neacutecessairement uniques Les applications peuvent deacutependre de librairies ou dautres applications et les librairies peuvent deacutependre dautres librairies (mais pas dune application)La base de donneacutees permet de geacuterer des composantsLes composants sont inteacutegreacutes agrave une application ou librairie Les composants ont un code interne agrave lapplication ou la librairie quil servent une version et une description courte et une URL Le code et le numeacutero de version permettent didentifier localement le composant au sein de la librairie ou de lapplication la description courte et lURL sont optionnellesLa base de donneacutees permet de geacuterer des licencesLes applications librairies et composants sont attacheacutes agrave une ou plusieurs licences identifieacutees par leur nom (GPL MPL) leur version et leur langue et comportant le texte inteacutegral de la licence Les versions des logiciels et licences sont de type numeacutero de licence majeur point numeacutero de licence mineur comme 10 ou 22La base de donneacutees permet de geacuterer des cateacutegoriesChaque logiciel est rangeacute dans une cateacutegorie principale et plusieurs cateacutegories secondaires Exemple de cateacutegories bureautique dessin multimeacutedia physique

Exemple (factice) de donneacutees

Applications

Scenari 41 une chaicircne eacuteditoriale XML httpscenariorg deacutepend de Libreoffice 43 et de ImageMagick 68Libreoffice 43 une suite bureautique WYSIWYG httplibreofficeorg

Librairie

ImageMagick 68 permet de creacuteer de convertir de modifier et dafficher des images http imagemagickorg

Composant

impng 02 est un composant de ImageMagick 68 permet de compresser une image au format PNG

Toutes ces applications librairies et composants sont disponibles sous une licence LGPL 30 et GPL 30 franccedilaisesToutes ces applications et librairies sont rangeacutees dans la cateacutegorie principale document Scenari est rangeacute dans la cateacutegorie secondaire Eacutedition WYSIWYM Libreoffice dans la cateacutegorie secondaire Bureautique ImageMagick dans la cateacutegorie secondaire Multimeacutedia

Question

Reacutealiser un MCD en UML[ ]solution ndeg9 [ ] p58

Devoirs

34

1 Exercice Arbre de scegravene 3D[30 minutes]

On souhaite pouvoir geacuterer les diffeacuterents eacuteleacutements composant des scegravenes 3D dans une base de donneacutees Une scegravene contient des objets qui eux-mecircmes peuvent appartenir agrave plusieurs scegravenes (au moins une) mais il ne peut y avoir plusieurs fois le mecircme objet dans une mecircme scegravene Dans chaque scegravene les objets peuvent ecirctre visibles ou invisibles Les scegravenes et les objets sont identifieacutes de maniegravere unique par un nom Une scegravene peut ecirctre active ou inactive Un objet a comme proprieacuteteacute une position dans lespace repreacutesenteacutee par un vecteur de reacuteels agrave trois composantes (x y z) Les objets sont organiseacutes de maniegravere hieacuterarchique un objet peut ecirctre parent de plusieurs objets et chaque objet peut avoir au plus un parent Des scripts peuvent ecirctre associeacutes agrave un objet ou agrave une scegravene (agrave lun ou agrave lautre mais pas aux deux) Un script est identifieacute de maniegravere unique par un nom et possegravede eacutegalement un attribut permettant de connaicirctre son eacutetat (actif ou inactif) Un personnage est un objet particulier qui possegravede des animations Une animation est relative agrave un personnage et est identifieacutee de maniegravere locale par un nom Agrave un objet est associeacute un maillage et celui-ci peut ecirctre utiliseacute par plusieurs objets Un maillage est identifieacute de maniegravere unique par un nom et est composeacute de plusieurs eacuteleacutements Chaque eacuteleacutement est relatif agrave un maillage et est identifieacute de maniegravere locale par un numeacutero Il existe exactement trois types deacuteleacutement des nœuds des arrecirctes et des faces Une face est deacutelimiteacutee par trois arrecirctes et chaque arrecircte est deacutelimiteacutee par deux nœuds Plusieurs arrecirctes peuvent partager un mecircme nœud et plusieurs faces peuvent partager une mecircme arrecircte Afin deacutevaluer la complexiteacute dune scegravene on souhaite pouvoir calculer le nombre de faces afficheacutees pour une scegravene donneacutee (cest-agrave-dire la somme du nombre de faces du maillage associeacute aux objets visibles de la scegravene) Un maillage possegravede plusieurs mateacuteriaux identifieacutes de maniegravere unique par un nom Un mateacuteriau peut ecirctre associeacute agrave plusieurs maillages Un mateacuteriau est caracteacuteriseacute par une couleur deacutefinie par un vecteur dentiers agrave quatre composantes rouge vert bleu alpha Un mateacuteriau peut posseacuteder une texture et celle-ci peut ecirctre utiliseacutee par plusieurs mateacuteriaux Une texture est identifieacutee de maniegravere unique par un nom et possegravede comme attribut une image

Question 1

Question 2

DevoirsIII

Proposez une clarification de ce problegraveme On pourra reclasser les informations par grande cateacutegorie scegravene objets scripts

Eacutetablissez un modegravele conceptuel en UML de ce problegraveme

Compleacutement Exercices de modeacutelisation suppleacutementaire

35

1 Exercice Appartements agrave louer[30 min]

Une agence dimmobilier (ventes et locations) veut geacuterer son parc dappartements dans une base de donneacutees Chaque appartement possegravede plusieurs piegraveces qui peuvent ecirctre des piegraveces dhabitation des piegraveces de rangement ou des commoditeacutes

Chaque piegravece a une superficie un nombre de prises eacutelectriques et des meubles Pour ces derniers on veut enregistrer le nom du modegravele et le type (chaise lit four etc) Rien nempecircche quune piegravece comporte plusieurs meubles identiques (par exemple plusieurs chaises PIN IQUEA) Les piegraveces dhabitation ont une ou plusieurs fenecirctres les piegraveces de rangement ont une ou plusieurs eacutetagegraveres et une surface de rangement utile totale On veut aussi savoir dans quelles piegraveces de rangement se situent les tableaux eacutelectriques de lappartement Finalement les piegraveces commoditeacutes peuvent ecirctre de trois types cuisine toilette ou salle de bain

Lagence veut aussi enregistrer les portes entre les diffeacuterentes piegraveces Une porte peut ecirctre agrave simple battant double battant coulissante ou une simple ouverture

Chaque appartement a une adresse une superficie totale (qui est la somme des superficies des piegraveces) et un type qui est la lettre T suivie du nombre de piegraveces dhabitation de lappartement Pour un appartement donneacute chaque piegravece est identifieacutee par un numeacutero (commenccedilant au numeacutero 1)

Lagence veut eacutegalement enregistrer le quartier ougrave se trouve lappartement auquel est lieacute un prix par megravetre carreacute Finalement elle veut garder un historique de lhistoire de lappartement les peacuteriodes pour lesquelles il est libre occupeacute en travaux ou vendu

Question

2 Exercice Objectifs[40 min]

Vous prenez la preacutesidence de lassociation Objectifs dont lobjet est daider ses eacutetudiants membres agrave mener des projets dans le cadre de leurs eacutetudes

Compleacutement Exercices de modeacutelisation suppleacutementaire

IV

Reacutealisez le diagramme UML reacutepondant aux besoins de cette agence[ ]solution ndeg10 [ ] p59

Exercice Objectifs

36

- - -

-

-

- - -

Vous constatez en arrivant dans lassociation que personne ne sait exactement quels sont les projets en cours ni qui fait quoi dans les projets Vous ne parvenez pas non plus agrave obtenir une liste exacte des partenaires sur lesquels lassociation peut compter La seule chose sur laquelle vous parvenez agrave mettre la main est un fichier tableur vaguement agrave jour

Vous deacutecidez quil est plus que temps de mettre en place une base de donneacutees afin dassurer la bonne gestion des informations les plus importantes pour lassociation Vous vous attachez pour cela agrave reacutealiser une analyse des besoins

Analysez les documents ci-apregraves

Etat des projets

Eacutetat des projets de lassociation Objectifs

Recueil de besoins

Agrave partir de leacutetude du fonctionnement actuel de lassociation vous relevez les choses importantes agrave geacuterer suivantes

Les membres de lassociation geacuteneacuteralement identifieacutes par leur preacutenomLes projets geacutereacutes par lassociation avec des dates de deacutebut et de fin preacutecises et un chef de projetLe deacutetail des tacircches de chaque projet avec leurs dates de deacutebut et de fin aussi et la liste de tous les membres qui y participentLa liste des partenaires des projets avec leur rocircle preacutecis pour chacun des projets auxquels ils participent

Afin de mieux geacuterer les attributions des projets il serait eacutegalement inteacuteressant de creacuteer une liste des speacutecialiteacutes correspondant agrave ce qui ce fait dans lassociation et daffecter une speacutecialiteacute agrave chaque membre ainsi quune agrave chaque projet pour voir si ce sont bien les membres les mieux adapteacutes qui travaille sur les projets

Recueil de donneacutees

Les discussions avec les anciens membres de lassociation vous apprennent les choses suivantes

Lassociation a termineacute de geacuterer les trois projets Comeacutedie Musicale geacutereacutee par Nathalie sur les trois premiers mois du semestre dautomne 1001 Science en fecircte geacutereacutee par Pierre sur tout le semestre de printemps 1003 et Nuit du picolo geacutereacutee par Julien en novembre 1001Les speacutecialiteacutes recenseacutees pour le moment sont Ville Universiteacute Sport Entreprise Culture InternationalIl faut au moins dix membres agrave lassociation (sinon elle ferme) recruter ceux qui manquentAidez lassociation agrave diviser ses projets en tacircches

Exercice Objectifs

37

- Les partenaires suivants aident ou ont aideacute lassociation la mairie pour la comeacutedie musicale et la science en fecircte qui apporte un soutien financier le ministegravere de la culture qui apporte son soutien logistique agrave la science en fecircte lassociation des commerccedilants de la ville qui apporte son soutien publicitaire agrave la comeacutedie musicale 1664 qui offre ses biegraveres agrave moitieacute prix pour la nuit du Picolo

Question 1

Question 2

Question 3

Afin de preacuteparer une analyse des besoins sommaire listez les donneacutees que vous devrez geacuterer agrave laide des documents et recueils de discussion agrave votre disposition Faites des hypothegraveses lorsque les donneacutees sont incomplegravetes ou incoheacuterentes

[ ]solution ndeg11 [ ] p59

Reacutealiser le MCD en UML et en E-A agrave partir des donneacutees preacutepareacutees dans la question preacuteceacutedente[ ]solution ndeg12 [ ] p60

Reacutealiser le MLD en relationnel en traduisant votre MCD[ ]solution ndeg13 [ ] p61

Contenus annexes

38Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

- - -

gt Attributs

Un attribut est une information eacuteleacutementaire qui caracteacuterise une classe et dont la valeur deacutepend de lobjet instancieacute

Le domaine des valeurs que peut prendre lattribut est fixeacute a prioriUn attribut est typeacute

Il peut prendre plusieurs valeurs distinctes dans son domaineUn attribut peut ecirctre multivalueacute Sa valeur alors est une fonction sur dautres attributs de la classeUn attribut peut ecirctre deacuteriveacute

(ou composite) Il joue alors le rocircle dun groupe dattributs (par Un attribut peut ecirctre composeacuteexemple une adresse peut ecirctre un attribut composeacute des attributs numeacutero type de voie nom de la voie) Cette notion renvoie agrave la notion de variable de type dans les langages de Record

programmation classiques

En UML on preacutefegravere lusage de meacutethodes aux attributs deacuteriveacutes On utilisera toujours des meacutethodes degraves que la valeur de lattribut deacuteriveacute deacutepend dautres attributs exteacuterieurs agrave sa classeEn UML on preacutefegravere lusage de compositions aux attributs composeacutes On utilisera toujours des compositions pour les attributs composeacutes et multivalueacutes

1 attributtype2 attribut_multivalueacute[nbMinValeursnbMaxValeurs]type3 attribut_deacuteriveacutetype4 attribut_composeacute5   - sous-attribut1type6   - sous-attribut2type7   -

Contenus annexes

Deacutefinition Attribut

Attention On utilise peu les attributs deacuteriveacutes et composeacutes en UML

Syntaxe

attributtype

attribut_multivalueacute[nbMinValeursnbMaxValeurs]type

attribut_deacuteriveacutetype

attribut_composeacute

  - sous-attribut1type

  - sous-attribut2type

  -

Contenus annexes

39Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Repreacutesentation dattributs en UML

Dans cet exemple les attributs Nom Preacutenom sont de type lun de 20 caractegraveres et lautre de 10 stringtandis que DateNaissance est de type et Age de type Preacutenom est un attribut multivalueacute ici date integerune personne peut avoir de 1 agrave 3 preacutenoms Age est un attribut deacuteriveacute il est calculeacute par une fonction sur DateNaissance

Meacutethodes (cf p39)

Composition (cf p5)

gt Meacutethodes

Une meacutethode (ou opeacuteration) est une fonction associeacutee agrave une classe dobjet qui permet dagir sur les objets de la classe ou qui permet agrave ces objets de renvoyer des valeurs (calculeacutees en fonction de paramegravetres)

1 methode(paramegravetres)type

Pour la modeacutelisation des bases de donneacutees les meacutethodes sont surtout utiliseacutees pour repreacutesenter des donneacutees calculeacutees (agrave linstar des attributs deacuteriveacutees) ou pour mettre en exergue des fonctions importantes du systegraveme cible Seules les meacutethodes les plus importantes sont repreacutesenteacutees lapproche est moins systeacutematique quen modeacutelisation objet par exemple

Lors de la transformation du modegravele conceptuel UML en modegravele logique relationnel les meacutethodes ne Leur repeacuterage au niveau conceptuel sert donc surtout daide-seront geacuteneacuteralement pas impleacutementeacutees

meacutemoire pour limpleacutementation au niveau applicatif

Exemple La classe Personne

Compleacutement Voir aussi

Deacutefinition Meacutethode

Syntaxe

Remarque Meacutethodes et modeacutelisation de BD

Remarque Meacutethodes relationnel relationnel-objet

methode(paramegravetres)type

Contenus annexes

40Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Au contraire un modegravele logique relationnel-objet permettra limpleacutementation de meacutethodes directement associeacutees agrave des tables Leur repeacuterage au niveau conceptuel est donc encore plus important

Transformation des meacutethodes par des vues (cf p40)

gt Transformation des meacutethodes par des vues

Lorsquune meacutethode est speacutecifieacutee sur un diagramme UML pour une classe C si cette meacutethode est une fonction relationnelle (elle renvoie une unique valeur et elle peut ecirctre reacutesolue par une requecircte SQL) alors on creacutee une vue qui reprend les attributs de la classe C et ajoute des colonnes calculeacutees pour les meacutethodes

Les attributs deacuteriveacutes eacutetant apparenteacutes agrave des meacutethodes ils peuvent eacutegalement ecirctre geacutereacutes par des vues

gt Classe dassociation

On utilise la notation des classes dassociation lorsque lon souhaite ajouter des proprieacuteteacutes agrave une association

Notation dune classe dassociation en UML

On reacuteserve en geacuteneacuteral les classes dassociation aux associations NM

Il est toujours possible de reacuteduire une classe dassociation sur une association 1N en migrant ses attributs sur la classe cocircteacute N et cest en geacuteneacuteral plus lisible ainsi

Compleacutement

Meacutethode

Remarque Attributs deacuteriveacutes

Deacutefinition Classe dassociation

Syntaxe Notation dune classe dassociation en UML

Meacutethode

Contenus annexes

41Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

-

Emplois

Selon le standard UML une classe dassociation est une classe et agrave ce titre elle peut ecirctre mobiliseacutee dans dautres associations ou dans des heacuteritages Nous deacuteconseillons neacuteanmoins ces notations qui ont tendance agrave complexifier la lecture et la transformation du diagramme

Nous conseillons donc de ne jamais associer une classe dassociation

gt Transformation des attributs

Pour chaque attribut eacuteleacutementaire et monovalueacute dune classe

on creacutee un attribut correspondant

Attribut

Classe1(ab)

Pour chaque attribut composite comprenant N sous-attributs dune classe

on creacutee N attributs correspondantsdont les noms sont la concateacutenation du nom de lattribut composite avec celui du sous-attribut

Exemple Exemple de classe dassociation

Conseil

Meacutethode Attributs simples

Meacutethode Attributs composites

Contenus annexes

42Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- - - -

Attribut composeacute

Classe1(ab_b1b_b2)

Pour chaque attribut multivalueacute b dune classe C

on creacutee une nouvelle relation RBqui comprend un attribut monovalueacute correspondant agrave bplus la cleacute de la relation repreacutesentant C la cleacute de RB est la concateacutenation des deux attributs

Attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Dans le cas ougrave le nombre maximum de est fini et petit on peut eacutegalement adopter la transformation b

suivante Classe1(ab1b2b3b4b5b6b7b8b9b10)

Si le nombre dattributs est infini ( ) cest impossible sil est trop grand ce nest pas souhaitableb[1]

On combine les regravegles eacutenonceacutees pour les attributs composeacutes et pour les attributs multivalueacutes

Attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Transformation des compositions (cf p42)

Meacutethode Attributs multivalueacutes

Meacutethode Attributs multivalueacutes (meacutethode alternative)

Meacutethode Attributs composeacutes multivalueacutes

Rappel Voir aussi

Contenus annexes

43Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

gt Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Compleacutement Attributs multivalueacutes et composeacutes

Contenus annexes

44Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

Rappel Voir aussi

Rappel

Meacutethode

Contenus annexes

45Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p48)

gt Transformation des associations 1N

Pour chaque association binaire de type 1N

on ajoute agrave la relation cocircteacute N une cleacute eacutetrangegravere vers la relation cocircteacute 1

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Meacutethode

Contenus annexes

46Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Association 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Contrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p46)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

R1

Compleacutement

Rappel

Meacutethode

Contenus annexes

47Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p47)

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Deacutefinition Projection

Contenus annexes

48Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Deacutefinition Projection

Contenus annexes

49Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Transformation des classes dassociation

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de lassociation NM

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Meacutethode Classe dassociation NM

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Exercice

17

27 ExerciceSoit le scheacutema UML suivant

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

[ ]solution ndeg3 [ ] p54

Modeacutelisation avanceacutee des associations 11 en relationnel

18

-

- -

-

-

3 Modeacutelisation avanceacutee des associations 11 en relationnelObjectifs

Savoir faire le passage dun scheacutema conceptuel UML agrave un scheacutema relationnel

Connaicirctre les choix possibles pour le cas de lassociation 11 et savoir faire le meilleur choix

Il existe des formulations conceptuelles en UML qui sont plus deacutelicates agrave traduire au niveau logique en relationnel comme lassociation 11 Ces cas requiegraverent un choix eacuteclaireacute de la part du concepteur

31 Transformation des associations 11 (approche geacuteneacuterale)

Il existe deux solutions pour transformer une association 11

Avec deux relations on traite lassociation 11 comme une association 1N puis lon ajoute une contrainte UNIQUE sur la cleacute eacutetrangegravere pour limiter la cardinaliteacute maximale agrave 1 Avec une seule relation on fusionne les deux classes en une seule relation

Association 11

Une des deux relations est choisie pour porter la cleacute eacutetrangegravere on ajoute les contraintes ou (cleacute candidate) sur la cleacute eacutetrangegravere et si neacutecessaire une UNIQUE KEY

contrainte imposant linstanciation simultaneacutee des deux relations

Classe1(abc=gtClasse2) avec c UNIQUE ou KEY

Classe2(cd)

ou

Classe1(ab)

Classe2(cda=gtClasse1) avec a UNIQUE ou KEY

On creacuteeacute une seule relation contenant lensemble des attributs des deux classes

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Meacutethode Avec deux relations (cleacute eacutetrangegravere)

Meacutethode Avec une relation (fusion)

Transformation des associations 1111

19

- -

- - - - - -

- on choisit une cleacute parmi les cleacutes candidates

Classe12(abcd) avec c UNIQUE ou KEY

ou

Classe21(cdab) avec a UNIQUE ou KEY

Ce choix entre les deux meacutethodes sera conduit par une appreacuteciation du rapport entre

La complexiteacute introduite par le fait davoir deux relations lagrave ou une suffitLa pertinence de la seacuteparation des deux relations dun point de vue seacutemantiqueLes pertes de performance dues agrave leacuteclatement des relationsLes pertes de performance dues au fait davoir une grande relationLes questions de seacutecuriteacute et de sucircreteacute factoriseacutees ou non au niveau des deux relations

Dans le cas dune association 1111 il faudra ajouter une contrainte compleacutementaire

Transformation des associations 1111 (cf p19)

32 Transformation des associations 1111

Le plus souvent cest meacutethode par des relations qui est la plus adapteacutee agrave ce casfusionLorsquelle ne lest pas et que lon choisit deux relations il faut ajouter une contrainte dynamique qui controcirclera que les deux relations sont bien toujours instancieacutees ensembles Notons que la cleacute eacutetrangegravere peut ecirctre choisie comme cleacute primaire

Association 11

Classe12(abcd) avec c KEY

ou

Classe21(cdab) avec a KEY

ou

Classe1(abc=gtClasse2) avec c KEY

Classe2(cd)

Contrainte PROJECTION(Classe1c) = PROJECTION(Classe2c)

ou

Classe1(ab)

Remarque Fusion des relations dans le cas de la traduction de lassociation 11

Compleacutement

Meacutethode Association 1111

Transformation des associations 0111

20

-

-

-

-

Classe2(cda=gtClasse1) avec a KEY

Contrainte PROJECTION(Classe1a) = PROJECTION(Classe2a)

La contrainte dynamique exprimeacutee ici suit le mecircme principe que pour les association 1NContrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p44)

33 Transformation des associations 0111

Le plus souvent cest la meacutethode par les deux relations qui est la plus adapteacutee on choisira toujours la relation cocircteacute 01 pour ecirctre reacutefeacuterenccedilante

Il est possible dutiliser la fusion dans ce cas les cleacutes cocircteacute 01 deviennent des attributs il ne UNIQUE

peuvent plus ecirctre cleacutes pouvant ecirctre NULL

Association 011

Classe1(abc=gtClasse2) avec c KEY

Classe2(cd)

ou

Classe12(cdab) avec a UNIQUE

34 Transformation des associations 0101

On choisit la solution avec deux relations dun cocircteacute ou de lautre la cleacute eacutetrangegravere est associeacute agrave la contrainte ce nest pas une cleacute car elle peut ecirctre nulleUNIQUE

Il nest pas souhaitable de choisir la fusion lune des deux relations pouvant ecirctre nulle on ne pourrait plus trouver de cleacute naturelle

Association 0101

Classe1(abc=gtClasse2) avec c UNIQUE

Classe2(cd)

ou

Compleacutement Contrainte dynamique

Meacutethode Association 0111

Meacutethode Association 0101

Exemple de choix pour une relation 11

21

-

- -

-

-

Classe1(ab)

Classe2(cda=gtClasse1) avec a UNIQUE

35 Exemple de choix pour une relation 11

Soit deux entiteacutes homme et femme et une association mariage de cardinaliteacute 1111 entre ces deux entiteacutes (hommes et femmes sont donc obligatoirement marieacutes)Les entiteacutes homme et femme sont identifieacutees par un attribut nom (dans ce modegravele chaque personne a un nom unique on pourrait remplacer le nom par un identifiant comme le numeacutero de seacutecuriteacute social ou par une cleacute artificielle pour ecirctre plus proche de la reacutealiteacute)

Bien que de type 1111 le choix de la fusion nest pas tregraves opportun car il sagit bien dobjets distincts que lon veut modeacuteliser

On choisira donc plutocirct la repreacutesentation avec deux relationsLa cleacute eacutetrangegravere pourra ecirctre du cocircteacute homme ou femme mecircme si la pratique dominante nous incite agrave la mettre du cocircteacute femmeOn pourra eacutegalement deacutecider de prendre la cleacute eacutetrangegravere comme cleacute primaire

1 homme (nom)2 femme (mariage=gthomme nom) avec nom KEY3 Contrainte PROJ(hommenom) = PROJ(femmemariage)

Si lassociation avait eacuteteacute de cardinaliteacute 0101 (certains hommes et femmes ne sont pas marieacutes) un choix similaire se serait imposeacute avec limpossibiliteacute de choisir la cleacute eacutetrangegravere comme cleacute primaire celle-ci pouvant ecirctre nulle et neacutetant donc plus candidate

1 homme (nom)2 femme (nom mariage=gthomme) avec mariage UNIQUE

4 Autres eacuteleacutements utiles en UML packages et steacutereacuteotypesObjectifs

Maicirctriser le diagramme de classe UML dans le cas de la conception de BD

41 Paquetages

Les paquetages (plus communeacutement appeleacutes ) sont des eacuteleacutements servant agrave organiser un modegravelepackage

Ils sont particuliegraverement utiles degraves que le modegravele comporte de nombreuses classes et que celles-ci peuvent ecirctre trieacutees selon plusieurs aspects structurants

Exemple

Exemple

Deacutefinition Package

homme (nom)

femme (mariage=gthomme nom) avec nom KEY

Contrainte PROJ(hommenom) = PROJ(femmemariage)

homme (nom)

femme (nom mariage=gthomme) avec mariage UNIQUE

Steacutereacuteotype

22

Notation des paquetages en UML

Exemple dutilisation des packages

On repreacutesente chaque classe au sein dun Il est alors possible de faire une preacutesentation globale du packagemodegravele (tous les ) partielle (une partie des ) ou centreacutee sur un seul packages packages package

Pour une repreacutesentation partielle ou centreacutee sur un on repreacutesente les concerneacutes avec leurs package packagesclasses propres ainsi que toutes les classes lieacutees des autres packages (et seulement celles-ci)

Preacutesentation partielle du modegravele centreacutee sur un package

Syntaxe

Exemple

Meacutethode

Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt

23

42 Steacutereacuteotype

Un steacutereacuteotype UML est une syntaxe permettant dajouter de la seacutemantique agrave la modeacutelisation des classes Il permet de deacutefinir des afin de regrouper conceptuellement un ensemble de classes (agrave linstar types de classedune classe qui permet de regrouper conceptuellement un ensemble dobjets)

Cest une meacutecanique de meacuteta-modeacutelisation elle permet deacutetendre le meacuteta-modegravele UML cest agrave dire le modegravele conceptuel du modegravele conceptuel

Un meacuteta-modegravele est le modegravele dun modegravele Par exemple le meacuteta-modegravele UML comprend les concepts de classe attribut association cardinaliteacute composition agreacutegation contraintes annotations On mobilise ces concepts (on les instancie) pour exprimer un modegravele particulier suivant le formalisme UML

Les steacutereacuteotypes permettent donc dajouter au meacuteta-modegravele UML standard celui que tout le monde utilise des concepts locaux pour enrichir le langage de modeacutelisation que lon utilise pour reacutealiser des modegraveles

Notation dun steacutereacuteotype en UML

Un steacutereacuteotype speacutecifique enrichit le meacuteta-modegravele UML mais selon une seacutemantique qui est propre agrave celui qui la poseacute non standard donc La conseacutequence est que pour un tiers linterpreacutetation du steacutereacuteotype nest plus normaliseacutee et sera potentiellement plus facilement erroneacutee Il convient donc de ne pas abuser de cette meacutecanique

Deux ou trois steacutereacuteotypes speacutecifiques correctement deacutefinis sont faciles agrave transmettre plusieurs dizaines repreacutesenteraient un nouveau langage complet agrave apprendre pour le lecteur du modegravele

Il existe des steacutereacuteotypes fournit en standard par UML ou communeacutement utiliseacutes par les modeacutelisateurs Lavantage est quil seront compris plus largement au mecircme titre que le reste du meacuteta-modegravele (ils ont une valeur de standard)

43 Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt

Deacutefinition Steacutereacuteotype UML

Deacutefinition Meacuteta-modegravele

Syntaxe

Conseil Steacutereacuteotypes speacutecifiques et steacutereacuteotypes standard

Syntaxe

Type utilisateurs steacutereacuteotype ltltdataTypegtgt

24

Steacutereacuteotype UML permettant dexprimer une eacutenumeacuteration

Exemple de modeacutelisation UML deacutenumeacuteration

44 Type utilisateurs steacutereacuteotype ltltdataTypegtgt

Les types utilisateurs permettent de deacutefinir des types complexes propres en extension des types primaires (entier chaicircne date)

Steacutereacuteotype dataType

Steacutereacuteotype dataType (exemple)

Cette modeacutelisation est eacutequivalente agrave la modeacutelisation des attributs composeacutes directement dans la classe principale Cest une repreacutesentation plus standard en UML

Exemple

Syntaxe

Exemple

Meacutethode Attributs composeacutes

Synthegravese sur la modalisation UML et relationnelle

25

Quelques eacuteleacutements de stylistique UML

26

-

- -

-

-

-

- - -

- - - -

1

2

3

5 Synthegravese sur la modalisation UML et relationnelle51 Quelques eacuteleacutements de stylistique UML

Toutes les associations doivent ecirctre nommeacutees (sauf composition heacuteritage agreacutegation)Ne pas utiliser de nom geacuteneacuterique pour les Classes comme Entiteacute Classe Objet TrucEacuteviter les noms geacuteneacuteriques pour les associations (comme est associeacute agrave)Attention au sens des compositions et agreacutegation le losange est cocircteacute ensemble et noubliez pas les cardinaliteacutes notamment cocircteacute parties

Nutilisez pas le souligneacute ni les en UML pour identifier les cleacutes preacutefeacuterez la contrainte keyPreacutefeacuterez lheacuteritage aux booleacuteens de typage en UMLLes attributs deacuteriveacutes sont reacuteserveacutes aux deacuterivations simples (des attributs de la mecircme classe) si cest plus complexe preacutefeacuterez des meacutethodes (et dans le doute preacutecisez les modes de calcul sur le scheacutema ou dans une note agrave part)Donnez des exemples de contenu lorsque ce nest pas eacutevident (lorsque le couple nom dattribut et type ne permet pas de faccedilon eacutevidente de comprendre de quoi lon parle)Inutile de deacuteclarer le type booleacuteen en UML utilisez-le directement comme un type de donneacutees connu

Si tous vos heacuteritages sont exclusifs notez-le agrave part pour alleacuteger votre scheacutema (et eacuteviter labondance de XOR)

52 Attention aux cleacutes artificielles

en UML on ne pose jamais de cleacutes artificiellesen relationnel on pose rarement des cleacute artificielles sauf dans le cas de cleacutes eacutetrangegraveres vraiment trop compliqueacuteesen SQL on peut poser des cleacutes artificielles si on a une bonne raison (ce nest donc pas systeacutematique et cest agrave justifier)

On najoutera pas de cleacute artificielle en UML au moment de la modeacutelisation conceptuelle des donneacutees

Formellement en UML la notion de cleacute nexiste pas (contrairement agrave l ) elle est ajouteacutee par les E-A

pratiquants des BD

Logiquement on a pas besoin de cette notion en UML les cleacutes artificielles servent en relationnel et dans certains cas uniquementPratiquement cela peut conduire agrave des situations absurdes (comme enlever au niveau logique des cleacutes artificielles ajouteacutees au niveau conceptuel)

Attention

Conseil

Compleacutement

Fondamental

Cleacutes artificielles et niveau conceptuel

Bibliographie commenteacutee sur la modeacutelisation UML

27

-

-

- -

-

- -

-

-

3

4

5

si on fait du non-relationnel on ne doit pas ajouter de cleacutes artificielles dans certains cas (limbrication typiquement) cela arrive mecircme en relationnel avec la transformation de lheacuteritage (dans certains cas toujours)

Meacutethodologiquement il faut se concentrer agrave chaque phase sur ce qui est important donc au moment du MCD on traduit les besoins on repegravere les contraintes explicites (cleacute uniciteacute non nulliteacute) sans se preacuteoccuper de ce qui sera rendu neacutecessaire par la suite par la modeacutelisation relationnelle (les cleacutes eacutetrangegraveres par exemple) ou limpleacutementation (loptimisation par exemple) Agrave chaque jour suffit sa peine Peacutedagogiquement enfin les deacutebutants ont tendance (agrave cause des environnements de conception graphique comme phpMyAdmin notamment) agrave systeacutematiser les cleacutes artificielles en SQL (on pourrait en discuter) mais eacutegalement agrave ne pas faire le travail de recherche des cleacutes naturelles (au niveau relationnel notamment ce qui est une faute de modeacutelisation) Donc au plus tard on fait intervenir les cleacutes artificielles au plus on a une chance de penser aux cleacutes naturelles

Soit le modegravele relationnel suivant

1 Etu (id numEtu) avec numEtu cleacute 2 UV (id codeUv) avec codeUv cleacute3 Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

La question qui permet dafficher la liste des eacutetudiants (numEtu) avec leurs UVs (codeUv) neacutecessite une jointure des cleacutes artificielles Un modegravele sans ces cleacutes artificielles aurait eacuteteacute plus performant pour agrave causereacutepondre agrave cette question puisque toutes les informations se trouvent dans la relation Inscriptions

1 Etu (numEtu) 2 UV (codeUv) 3 Inscriptions (uv=gtUV etu=gtEtu)

Ne soyez pas systeacutematiqueIl est en effet freacutequent dans un projet reacuteel dadopter des cleacutes artificielles presque systeacutematiquement vous pourrez le faire en connaissance de cause quand vous aurez bien compris pourquoi cest inteacuteressant et quand ccedila ne lest pasLes cleacutes artificielles sont inteacuteressantes pour autre chose que les performances (leacutevolutiviteacute par exemple choisissez-les quand vous savez pourquoi)Les cleacutes artificielles ne dispensent pas de rechercher les cleacutes naturelles Les cleacutes artificielles ne sont pas la seule faccedilon doptimiser une base de donneacutees (indexation deacutenormalisation)

53 Bibliographie commenteacutee sur la modeacutelisation UML

Il existe de nombreux outils de modeacutelisation UML On pourra citer

logiciel Open Source et multi-plateformes facile dusage (qui marche neacuteanmoins mieux sur Linux Dia

que sur Windows)

(version gratuite)Objecteering

Cleacutes artificielles et optimisation est-il toujours plus performant dutiliser des cleacutes artificielles

Conseil

Compleacutement Outils de modeacutelisation UML

Etu (id numEtu) avec numEtu cleacute

UV (id codeUv) avec codeUv cleacute

Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

Etu (numEtu)

UV (codeUv)

Inscriptions (uv=gtUV etu=gtEtu)

Bibliographie commenteacutee sur la modeacutelisation UML

28

- - - - - -

- - - - - -

Agrave voir eacutegalement en Open Source ou (non testeacute par lauteur)ArgoUML EclipseUML

UML2 en action

Pour un aperccedilu plus deacutetailleacute des possibiliteacutes dexpression du diagramme de classe UML lire le chapitre 7 Deacuteveloppement du modegravele statique (pages 133 agrave 163)

On pourra notamment y trouver

Lassociation dagreacutegationLes proprieacuteteacutes dassociationLexpression de rocircles dans les associationsLes attributs de classeLes qualificatifsLes opeacuterations (ou meacutethodes)

Le chapitre donne de plus des conseils meacutethodologiques pour la conception (voir en particulier la synthegravese page 163)

On pourra eacutegalement y trouver

Des principes de choix de modeacutelisation entre attributs et classes et sur la segmentation des classesDes principes de seacutelection des attributs (redondance avec les associations avec les classes etc)Des principes de seacutelection des associationsDes principes de choix de cardinaliteacute (notamment pour la gestion dhistorisation)Des principes de seacutelection des relations de geacuteneacuteralisation (heacuteritage)Des principes dintroduction de meacutetaclasses (type)s

U M L e n Franccedilais

Une tregraves bonne reacutefeacuterence en ligne sur la modeacutelisation UML avec des cours des liens vers la norme etc

Le contenu deacutepasse tregraves largement lusage dUML pour la modeacutelisation de BD (et ne fait dailleurs pas de reacutefeacuterence preacutecise agrave ce sous-ensemble particulier)

On pourra consulter en particulier le chapitre sur les diagrammes de classe httpumlfreefrcoursi-p14html

UML en 5 eacutetapes

On consultera en particulier le tutoriel sur les diagrammes de classe httpdeveloppeurjournaldunetcomtutorielcpt010607cpt_umlintroshtml

Cinq petits conseils pour un scheacutema UML efficace

Compleacutement Modeacutelisation UML

Compleacutement Reacutefeacuterence UML en ligne

Compleacutement Tutoriel sur la modeacutelisation UML

Compleacutement Conseils

Synthegravese Les diagrammes de modeacutelisation conceptuelle

29

-

-

- -

-

- -

-

-

- -

-

- - - -

-

-

(chapitre 3)UML2 par la pratique

Des explications exemples et eacutetudes de cas

54 Synthegravese Les diagrammes de modeacutelisation conceptuelle

Un modegravele conceptuel peut ecirctre repreacutesenteacute sous forme de diagramme E-A ou sous forme de diagramme de classe UML

Classe ou Entiteacute

Attribut ou Proprieacuteteacute

TypeacuteMulti-valueacuteComposeacuteDeacuteriveacute

Meacutethode

ParamegravetresValeur de retour

Association

Association

VerbeCardinaliteacute

Heacuteritage

Heacuteritage dattributsHeacuteritage de meacutethodes

Composition (ou entiteacute faible)

Cardinaliteacute

Compleacutement Pratique

Exercices

30

-

-

-

-

-

-

-

1 2

1

1 Exercice Lab III[20 min]

Description du problegraveme

Un laboratoire souhaite geacuterer les meacutedicaments quil conccediloit

Un meacutedicament est deacutecrit par un nom qui permet de lidentifier En effet il nexiste pas deux meacutedicaments avec le mecircme nom Un meacutedicament comporte une description courte en franccedilais ainsi quune description longue en latin On gegravere aussi le conditionnement du meacutedicament cest agrave dire le nombre de pilules par boicircte (qui est un nombre entier)Agrave chaque meacutedicament on associe une liste deacutedieacutee de contre-indications geacuteneacuteralement plusieurs parfois aucune Les contre-indications sont trieacutees par ordre dimportance Lordre est total est strict pour un meacutedicament donc chaque contre-indication possegravede une importance et il nexiste pas deux contre-indications associeacutees au mecircme meacutedicament avec la mecircme importanceTout meacutedicament possegravede au moins un composant souvent plusieurs Un composant est identifieacute par un code unique et possegravede un intituleacute Tout composant peut intervenir dans la fabrication de plusieurs meacutedicaments Il existe des composants qui ne sont pas utiliseacutes pour fabriquer des meacutedicaments et que lon veut quand mecircme geacuterer

Donneacutees de test

Afin de mateacuterialiser notre base de donneacutees nous obtenons les descriptions suivantes

Le a pour description courte et pour description longue Chourix Meacutedicament contre la chute des chouxlaquo raquoVivamus fermentum semper porta Nunc diam velit adipiscing ut tristique vitae sagittis vel odio laquo

Il est conditionneacute en boicircte de 13Maecenas convallis ullamcorper ultricies Curabitur ornare raquoSes contre-indications sont

Le Chourix ne doit jamais ecirctre pris apregraves minuitLe Chourix ne doit jamais ecirctre mis au contact avec de leau

Ses composants sont le et le HG79 SN50Le a pour description courte et pour Tropas Meacutedicament contre les dysfonctionnements intellectuelslaquo raquodescription longue Suspendisse lectus leo consectetur in tempor sit amet placerat quis neque Etiam laquo

Il est conditionneacute en boicircte de 42luctus porttitor lorem sed suscipit est rutrum non raquoSes contre-indications sont

Le Tropas doit ecirctre gardeacute agrave labri de la lumiegravere du soleil

Son unique composant est le HG79Les composants existants sont

HG79 Vif-argent alleacutegeacute

ExercicesII

Exercice Eacutetudiants et UVs (introduction)

31

- - -

- - HG81 Vif-argent alourdi

SN50 Pur eacutetain

Question 1

Question 2

Question 3

2 Exercice Eacutetudiants et UVs (introduction)[20 min]

On dispose du scheacutema UML ci-apregraves qui deacutecrit des eacutetudiants des UV les notes obtenues par les eacutetudiants agrave ces UV et les diplocircmes dorigine de ces eacutetudiants

Eacutetudiants et UVs

key deacutesigne des cleacutes candidates ici toutes les cleacutes ne sont composeacutees que dun seul attributlocal key deacutesigne une cleacute localeun semestre est de la forme PYYYY ou AYYYY (ougrave YYYY deacutesigneacute une anneacutee sur 4 chiffre) exemple A2013 P2014

Rappel Notion de cleacute locale dans classes dassociation (cf p49)

Effectuez le modegravele conceptuel en UML de ce problegraveme

Indices

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans deacutedieacuteeles donneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition

[ ]solution ndeg4 [ ] p56

En mobilisant les regravegles adeacutequates proposer un modegravele logique de donneacutees correspondant en relationnel Le repeacuterage des domaines et des cleacutes est obligatoire

[ ]solution ndeg5 [ ] p57

Dessiner des tableaux remplis avec les donneacutees fournies en exemple afin de montrer que le modegravele fonctionne selon le besoin exprimeacute initialement On pourra mettre le premier mot seulement des descriptions pour gagner du temps

[ ]solution ndeg6 [ ] p57

Exercice Super-heacuteros relationnels I

32

-

-

Question

3 Exercice Super-heacuteros relationnels I[20 min]

La gamme de super-heacuteros GARVEL veut reacutealiser la base de donneacutees de leurs figurines articuleacutees La socieacuteteacute a fait reacutealiser un modegravele UML qui doit servir de point de deacutepart agrave la mise en œuvre

Modegravele UML Figurines GARVEL

Question

4 Exercice Objets Numeacuteriques Libres[30 min]

Lassociation ONL (Objets Numeacuteriques Libres) est une association de promotion des logiciels libres Elle souhaite exposer sur un site Internet une liste de logiciels libres Ce site sera adosseacute agrave une base de donneacutees relationnelle ou relationnel-objet La premiegravere eacutetape de sa deacutemarche est de reacutealiser un modegravele conceptuel repreacutesentant ce quelle souhaite faire

La base de donneacutees permet de geacuterer des applicationsLes applications sont identifieacutees par leur nom (LibreOffice Gimp) et leur version (10 21) et comportent une description courte et une URL Tous les attributs sont obligatoires Chaque application a une URL uniqueLa base de donneacutees permet de geacuterer des librairies

Traduire le scheacutema en modegravele logique relationnel ( )MLD1

On choisira obligatoirement les cleacutes primaires parmi celles neacutecessitant le plus petit nombre de bits possible pour leur codage

[ ]solution ndeg7 [ ] p57

Transformer le modegravele UML en modegravele relationnel (justifier les passages non triviaux en particulier la relation dheacuteritage)

[ ]solution ndeg8 [ ] p58

Exercice Objets Numeacuteriques Libres

33

-

-

-

-

-

-

-

-

-

-

-

-

Les librairies sont des logiciels mais pas des applications Elles ont les mecircmes attributs que les applications (nom version description courte URL) mais les URL ne sont pas neacutecessairement uniques Les applications peuvent deacutependre de librairies ou dautres applications et les librairies peuvent deacutependre dautres librairies (mais pas dune application)La base de donneacutees permet de geacuterer des composantsLes composants sont inteacutegreacutes agrave une application ou librairie Les composants ont un code interne agrave lapplication ou la librairie quil servent une version et une description courte et une URL Le code et le numeacutero de version permettent didentifier localement le composant au sein de la librairie ou de lapplication la description courte et lURL sont optionnellesLa base de donneacutees permet de geacuterer des licencesLes applications librairies et composants sont attacheacutes agrave une ou plusieurs licences identifieacutees par leur nom (GPL MPL) leur version et leur langue et comportant le texte inteacutegral de la licence Les versions des logiciels et licences sont de type numeacutero de licence majeur point numeacutero de licence mineur comme 10 ou 22La base de donneacutees permet de geacuterer des cateacutegoriesChaque logiciel est rangeacute dans une cateacutegorie principale et plusieurs cateacutegories secondaires Exemple de cateacutegories bureautique dessin multimeacutedia physique

Exemple (factice) de donneacutees

Applications

Scenari 41 une chaicircne eacuteditoriale XML httpscenariorg deacutepend de Libreoffice 43 et de ImageMagick 68Libreoffice 43 une suite bureautique WYSIWYG httplibreofficeorg

Librairie

ImageMagick 68 permet de creacuteer de convertir de modifier et dafficher des images http imagemagickorg

Composant

impng 02 est un composant de ImageMagick 68 permet de compresser une image au format PNG

Toutes ces applications librairies et composants sont disponibles sous une licence LGPL 30 et GPL 30 franccedilaisesToutes ces applications et librairies sont rangeacutees dans la cateacutegorie principale document Scenari est rangeacute dans la cateacutegorie secondaire Eacutedition WYSIWYM Libreoffice dans la cateacutegorie secondaire Bureautique ImageMagick dans la cateacutegorie secondaire Multimeacutedia

Question

Reacutealiser un MCD en UML[ ]solution ndeg9 [ ] p58

Devoirs

34

1 Exercice Arbre de scegravene 3D[30 minutes]

On souhaite pouvoir geacuterer les diffeacuterents eacuteleacutements composant des scegravenes 3D dans une base de donneacutees Une scegravene contient des objets qui eux-mecircmes peuvent appartenir agrave plusieurs scegravenes (au moins une) mais il ne peut y avoir plusieurs fois le mecircme objet dans une mecircme scegravene Dans chaque scegravene les objets peuvent ecirctre visibles ou invisibles Les scegravenes et les objets sont identifieacutes de maniegravere unique par un nom Une scegravene peut ecirctre active ou inactive Un objet a comme proprieacuteteacute une position dans lespace repreacutesenteacutee par un vecteur de reacuteels agrave trois composantes (x y z) Les objets sont organiseacutes de maniegravere hieacuterarchique un objet peut ecirctre parent de plusieurs objets et chaque objet peut avoir au plus un parent Des scripts peuvent ecirctre associeacutes agrave un objet ou agrave une scegravene (agrave lun ou agrave lautre mais pas aux deux) Un script est identifieacute de maniegravere unique par un nom et possegravede eacutegalement un attribut permettant de connaicirctre son eacutetat (actif ou inactif) Un personnage est un objet particulier qui possegravede des animations Une animation est relative agrave un personnage et est identifieacutee de maniegravere locale par un nom Agrave un objet est associeacute un maillage et celui-ci peut ecirctre utiliseacute par plusieurs objets Un maillage est identifieacute de maniegravere unique par un nom et est composeacute de plusieurs eacuteleacutements Chaque eacuteleacutement est relatif agrave un maillage et est identifieacute de maniegravere locale par un numeacutero Il existe exactement trois types deacuteleacutement des nœuds des arrecirctes et des faces Une face est deacutelimiteacutee par trois arrecirctes et chaque arrecircte est deacutelimiteacutee par deux nœuds Plusieurs arrecirctes peuvent partager un mecircme nœud et plusieurs faces peuvent partager une mecircme arrecircte Afin deacutevaluer la complexiteacute dune scegravene on souhaite pouvoir calculer le nombre de faces afficheacutees pour une scegravene donneacutee (cest-agrave-dire la somme du nombre de faces du maillage associeacute aux objets visibles de la scegravene) Un maillage possegravede plusieurs mateacuteriaux identifieacutes de maniegravere unique par un nom Un mateacuteriau peut ecirctre associeacute agrave plusieurs maillages Un mateacuteriau est caracteacuteriseacute par une couleur deacutefinie par un vecteur dentiers agrave quatre composantes rouge vert bleu alpha Un mateacuteriau peut posseacuteder une texture et celle-ci peut ecirctre utiliseacutee par plusieurs mateacuteriaux Une texture est identifieacutee de maniegravere unique par un nom et possegravede comme attribut une image

Question 1

Question 2

DevoirsIII

Proposez une clarification de ce problegraveme On pourra reclasser les informations par grande cateacutegorie scegravene objets scripts

Eacutetablissez un modegravele conceptuel en UML de ce problegraveme

Compleacutement Exercices de modeacutelisation suppleacutementaire

35

1 Exercice Appartements agrave louer[30 min]

Une agence dimmobilier (ventes et locations) veut geacuterer son parc dappartements dans une base de donneacutees Chaque appartement possegravede plusieurs piegraveces qui peuvent ecirctre des piegraveces dhabitation des piegraveces de rangement ou des commoditeacutes

Chaque piegravece a une superficie un nombre de prises eacutelectriques et des meubles Pour ces derniers on veut enregistrer le nom du modegravele et le type (chaise lit four etc) Rien nempecircche quune piegravece comporte plusieurs meubles identiques (par exemple plusieurs chaises PIN IQUEA) Les piegraveces dhabitation ont une ou plusieurs fenecirctres les piegraveces de rangement ont une ou plusieurs eacutetagegraveres et une surface de rangement utile totale On veut aussi savoir dans quelles piegraveces de rangement se situent les tableaux eacutelectriques de lappartement Finalement les piegraveces commoditeacutes peuvent ecirctre de trois types cuisine toilette ou salle de bain

Lagence veut aussi enregistrer les portes entre les diffeacuterentes piegraveces Une porte peut ecirctre agrave simple battant double battant coulissante ou une simple ouverture

Chaque appartement a une adresse une superficie totale (qui est la somme des superficies des piegraveces) et un type qui est la lettre T suivie du nombre de piegraveces dhabitation de lappartement Pour un appartement donneacute chaque piegravece est identifieacutee par un numeacutero (commenccedilant au numeacutero 1)

Lagence veut eacutegalement enregistrer le quartier ougrave se trouve lappartement auquel est lieacute un prix par megravetre carreacute Finalement elle veut garder un historique de lhistoire de lappartement les peacuteriodes pour lesquelles il est libre occupeacute en travaux ou vendu

Question

2 Exercice Objectifs[40 min]

Vous prenez la preacutesidence de lassociation Objectifs dont lobjet est daider ses eacutetudiants membres agrave mener des projets dans le cadre de leurs eacutetudes

Compleacutement Exercices de modeacutelisation suppleacutementaire

IV

Reacutealisez le diagramme UML reacutepondant aux besoins de cette agence[ ]solution ndeg10 [ ] p59

Exercice Objectifs

36

- - -

-

-

- - -

Vous constatez en arrivant dans lassociation que personne ne sait exactement quels sont les projets en cours ni qui fait quoi dans les projets Vous ne parvenez pas non plus agrave obtenir une liste exacte des partenaires sur lesquels lassociation peut compter La seule chose sur laquelle vous parvenez agrave mettre la main est un fichier tableur vaguement agrave jour

Vous deacutecidez quil est plus que temps de mettre en place une base de donneacutees afin dassurer la bonne gestion des informations les plus importantes pour lassociation Vous vous attachez pour cela agrave reacutealiser une analyse des besoins

Analysez les documents ci-apregraves

Etat des projets

Eacutetat des projets de lassociation Objectifs

Recueil de besoins

Agrave partir de leacutetude du fonctionnement actuel de lassociation vous relevez les choses importantes agrave geacuterer suivantes

Les membres de lassociation geacuteneacuteralement identifieacutes par leur preacutenomLes projets geacutereacutes par lassociation avec des dates de deacutebut et de fin preacutecises et un chef de projetLe deacutetail des tacircches de chaque projet avec leurs dates de deacutebut et de fin aussi et la liste de tous les membres qui y participentLa liste des partenaires des projets avec leur rocircle preacutecis pour chacun des projets auxquels ils participent

Afin de mieux geacuterer les attributions des projets il serait eacutegalement inteacuteressant de creacuteer une liste des speacutecialiteacutes correspondant agrave ce qui ce fait dans lassociation et daffecter une speacutecialiteacute agrave chaque membre ainsi quune agrave chaque projet pour voir si ce sont bien les membres les mieux adapteacutes qui travaille sur les projets

Recueil de donneacutees

Les discussions avec les anciens membres de lassociation vous apprennent les choses suivantes

Lassociation a termineacute de geacuterer les trois projets Comeacutedie Musicale geacutereacutee par Nathalie sur les trois premiers mois du semestre dautomne 1001 Science en fecircte geacutereacutee par Pierre sur tout le semestre de printemps 1003 et Nuit du picolo geacutereacutee par Julien en novembre 1001Les speacutecialiteacutes recenseacutees pour le moment sont Ville Universiteacute Sport Entreprise Culture InternationalIl faut au moins dix membres agrave lassociation (sinon elle ferme) recruter ceux qui manquentAidez lassociation agrave diviser ses projets en tacircches

Exercice Objectifs

37

- Les partenaires suivants aident ou ont aideacute lassociation la mairie pour la comeacutedie musicale et la science en fecircte qui apporte un soutien financier le ministegravere de la culture qui apporte son soutien logistique agrave la science en fecircte lassociation des commerccedilants de la ville qui apporte son soutien publicitaire agrave la comeacutedie musicale 1664 qui offre ses biegraveres agrave moitieacute prix pour la nuit du Picolo

Question 1

Question 2

Question 3

Afin de preacuteparer une analyse des besoins sommaire listez les donneacutees que vous devrez geacuterer agrave laide des documents et recueils de discussion agrave votre disposition Faites des hypothegraveses lorsque les donneacutees sont incomplegravetes ou incoheacuterentes

[ ]solution ndeg11 [ ] p59

Reacutealiser le MCD en UML et en E-A agrave partir des donneacutees preacutepareacutees dans la question preacuteceacutedente[ ]solution ndeg12 [ ] p60

Reacutealiser le MLD en relationnel en traduisant votre MCD[ ]solution ndeg13 [ ] p61

Contenus annexes

38Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

- - -

gt Attributs

Un attribut est une information eacuteleacutementaire qui caracteacuterise une classe et dont la valeur deacutepend de lobjet instancieacute

Le domaine des valeurs que peut prendre lattribut est fixeacute a prioriUn attribut est typeacute

Il peut prendre plusieurs valeurs distinctes dans son domaineUn attribut peut ecirctre multivalueacute Sa valeur alors est une fonction sur dautres attributs de la classeUn attribut peut ecirctre deacuteriveacute

(ou composite) Il joue alors le rocircle dun groupe dattributs (par Un attribut peut ecirctre composeacuteexemple une adresse peut ecirctre un attribut composeacute des attributs numeacutero type de voie nom de la voie) Cette notion renvoie agrave la notion de variable de type dans les langages de Record

programmation classiques

En UML on preacutefegravere lusage de meacutethodes aux attributs deacuteriveacutes On utilisera toujours des meacutethodes degraves que la valeur de lattribut deacuteriveacute deacutepend dautres attributs exteacuterieurs agrave sa classeEn UML on preacutefegravere lusage de compositions aux attributs composeacutes On utilisera toujours des compositions pour les attributs composeacutes et multivalueacutes

1 attributtype2 attribut_multivalueacute[nbMinValeursnbMaxValeurs]type3 attribut_deacuteriveacutetype4 attribut_composeacute5   - sous-attribut1type6   - sous-attribut2type7   -

Contenus annexes

Deacutefinition Attribut

Attention On utilise peu les attributs deacuteriveacutes et composeacutes en UML

Syntaxe

attributtype

attribut_multivalueacute[nbMinValeursnbMaxValeurs]type

attribut_deacuteriveacutetype

attribut_composeacute

  - sous-attribut1type

  - sous-attribut2type

  -

Contenus annexes

39Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Repreacutesentation dattributs en UML

Dans cet exemple les attributs Nom Preacutenom sont de type lun de 20 caractegraveres et lautre de 10 stringtandis que DateNaissance est de type et Age de type Preacutenom est un attribut multivalueacute ici date integerune personne peut avoir de 1 agrave 3 preacutenoms Age est un attribut deacuteriveacute il est calculeacute par une fonction sur DateNaissance

Meacutethodes (cf p39)

Composition (cf p5)

gt Meacutethodes

Une meacutethode (ou opeacuteration) est une fonction associeacutee agrave une classe dobjet qui permet dagir sur les objets de la classe ou qui permet agrave ces objets de renvoyer des valeurs (calculeacutees en fonction de paramegravetres)

1 methode(paramegravetres)type

Pour la modeacutelisation des bases de donneacutees les meacutethodes sont surtout utiliseacutees pour repreacutesenter des donneacutees calculeacutees (agrave linstar des attributs deacuteriveacutees) ou pour mettre en exergue des fonctions importantes du systegraveme cible Seules les meacutethodes les plus importantes sont repreacutesenteacutees lapproche est moins systeacutematique quen modeacutelisation objet par exemple

Lors de la transformation du modegravele conceptuel UML en modegravele logique relationnel les meacutethodes ne Leur repeacuterage au niveau conceptuel sert donc surtout daide-seront geacuteneacuteralement pas impleacutementeacutees

meacutemoire pour limpleacutementation au niveau applicatif

Exemple La classe Personne

Compleacutement Voir aussi

Deacutefinition Meacutethode

Syntaxe

Remarque Meacutethodes et modeacutelisation de BD

Remarque Meacutethodes relationnel relationnel-objet

methode(paramegravetres)type

Contenus annexes

40Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Au contraire un modegravele logique relationnel-objet permettra limpleacutementation de meacutethodes directement associeacutees agrave des tables Leur repeacuterage au niveau conceptuel est donc encore plus important

Transformation des meacutethodes par des vues (cf p40)

gt Transformation des meacutethodes par des vues

Lorsquune meacutethode est speacutecifieacutee sur un diagramme UML pour une classe C si cette meacutethode est une fonction relationnelle (elle renvoie une unique valeur et elle peut ecirctre reacutesolue par une requecircte SQL) alors on creacutee une vue qui reprend les attributs de la classe C et ajoute des colonnes calculeacutees pour les meacutethodes

Les attributs deacuteriveacutes eacutetant apparenteacutes agrave des meacutethodes ils peuvent eacutegalement ecirctre geacutereacutes par des vues

gt Classe dassociation

On utilise la notation des classes dassociation lorsque lon souhaite ajouter des proprieacuteteacutes agrave une association

Notation dune classe dassociation en UML

On reacuteserve en geacuteneacuteral les classes dassociation aux associations NM

Il est toujours possible de reacuteduire une classe dassociation sur une association 1N en migrant ses attributs sur la classe cocircteacute N et cest en geacuteneacuteral plus lisible ainsi

Compleacutement

Meacutethode

Remarque Attributs deacuteriveacutes

Deacutefinition Classe dassociation

Syntaxe Notation dune classe dassociation en UML

Meacutethode

Contenus annexes

41Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

-

Emplois

Selon le standard UML une classe dassociation est une classe et agrave ce titre elle peut ecirctre mobiliseacutee dans dautres associations ou dans des heacuteritages Nous deacuteconseillons neacuteanmoins ces notations qui ont tendance agrave complexifier la lecture et la transformation du diagramme

Nous conseillons donc de ne jamais associer une classe dassociation

gt Transformation des attributs

Pour chaque attribut eacuteleacutementaire et monovalueacute dune classe

on creacutee un attribut correspondant

Attribut

Classe1(ab)

Pour chaque attribut composite comprenant N sous-attributs dune classe

on creacutee N attributs correspondantsdont les noms sont la concateacutenation du nom de lattribut composite avec celui du sous-attribut

Exemple Exemple de classe dassociation

Conseil

Meacutethode Attributs simples

Meacutethode Attributs composites

Contenus annexes

42Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- - - -

Attribut composeacute

Classe1(ab_b1b_b2)

Pour chaque attribut multivalueacute b dune classe C

on creacutee une nouvelle relation RBqui comprend un attribut monovalueacute correspondant agrave bplus la cleacute de la relation repreacutesentant C la cleacute de RB est la concateacutenation des deux attributs

Attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Dans le cas ougrave le nombre maximum de est fini et petit on peut eacutegalement adopter la transformation b

suivante Classe1(ab1b2b3b4b5b6b7b8b9b10)

Si le nombre dattributs est infini ( ) cest impossible sil est trop grand ce nest pas souhaitableb[1]

On combine les regravegles eacutenonceacutees pour les attributs composeacutes et pour les attributs multivalueacutes

Attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Transformation des compositions (cf p42)

Meacutethode Attributs multivalueacutes

Meacutethode Attributs multivalueacutes (meacutethode alternative)

Meacutethode Attributs composeacutes multivalueacutes

Rappel Voir aussi

Contenus annexes

43Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

gt Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Compleacutement Attributs multivalueacutes et composeacutes

Contenus annexes

44Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

Rappel Voir aussi

Rappel

Meacutethode

Contenus annexes

45Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p48)

gt Transformation des associations 1N

Pour chaque association binaire de type 1N

on ajoute agrave la relation cocircteacute N une cleacute eacutetrangegravere vers la relation cocircteacute 1

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Meacutethode

Contenus annexes

46Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Association 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Contrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p46)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

R1

Compleacutement

Rappel

Meacutethode

Contenus annexes

47Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p47)

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Deacutefinition Projection

Contenus annexes

48Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Deacutefinition Projection

Contenus annexes

49Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Transformation des classes dassociation

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de lassociation NM

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Meacutethode Classe dassociation NM

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Modeacutelisation avanceacutee des associations 11 en relationnel

18

-

- -

-

-

3 Modeacutelisation avanceacutee des associations 11 en relationnelObjectifs

Savoir faire le passage dun scheacutema conceptuel UML agrave un scheacutema relationnel

Connaicirctre les choix possibles pour le cas de lassociation 11 et savoir faire le meilleur choix

Il existe des formulations conceptuelles en UML qui sont plus deacutelicates agrave traduire au niveau logique en relationnel comme lassociation 11 Ces cas requiegraverent un choix eacuteclaireacute de la part du concepteur

31 Transformation des associations 11 (approche geacuteneacuterale)

Il existe deux solutions pour transformer une association 11

Avec deux relations on traite lassociation 11 comme une association 1N puis lon ajoute une contrainte UNIQUE sur la cleacute eacutetrangegravere pour limiter la cardinaliteacute maximale agrave 1 Avec une seule relation on fusionne les deux classes en une seule relation

Association 11

Une des deux relations est choisie pour porter la cleacute eacutetrangegravere on ajoute les contraintes ou (cleacute candidate) sur la cleacute eacutetrangegravere et si neacutecessaire une UNIQUE KEY

contrainte imposant linstanciation simultaneacutee des deux relations

Classe1(abc=gtClasse2) avec c UNIQUE ou KEY

Classe2(cd)

ou

Classe1(ab)

Classe2(cda=gtClasse1) avec a UNIQUE ou KEY

On creacuteeacute une seule relation contenant lensemble des attributs des deux classes

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Meacutethode Avec deux relations (cleacute eacutetrangegravere)

Meacutethode Avec une relation (fusion)

Transformation des associations 1111

19

- -

- - - - - -

- on choisit une cleacute parmi les cleacutes candidates

Classe12(abcd) avec c UNIQUE ou KEY

ou

Classe21(cdab) avec a UNIQUE ou KEY

Ce choix entre les deux meacutethodes sera conduit par une appreacuteciation du rapport entre

La complexiteacute introduite par le fait davoir deux relations lagrave ou une suffitLa pertinence de la seacuteparation des deux relations dun point de vue seacutemantiqueLes pertes de performance dues agrave leacuteclatement des relationsLes pertes de performance dues au fait davoir une grande relationLes questions de seacutecuriteacute et de sucircreteacute factoriseacutees ou non au niveau des deux relations

Dans le cas dune association 1111 il faudra ajouter une contrainte compleacutementaire

Transformation des associations 1111 (cf p19)

32 Transformation des associations 1111

Le plus souvent cest meacutethode par des relations qui est la plus adapteacutee agrave ce casfusionLorsquelle ne lest pas et que lon choisit deux relations il faut ajouter une contrainte dynamique qui controcirclera que les deux relations sont bien toujours instancieacutees ensembles Notons que la cleacute eacutetrangegravere peut ecirctre choisie comme cleacute primaire

Association 11

Classe12(abcd) avec c KEY

ou

Classe21(cdab) avec a KEY

ou

Classe1(abc=gtClasse2) avec c KEY

Classe2(cd)

Contrainte PROJECTION(Classe1c) = PROJECTION(Classe2c)

ou

Classe1(ab)

Remarque Fusion des relations dans le cas de la traduction de lassociation 11

Compleacutement

Meacutethode Association 1111

Transformation des associations 0111

20

-

-

-

-

Classe2(cda=gtClasse1) avec a KEY

Contrainte PROJECTION(Classe1a) = PROJECTION(Classe2a)

La contrainte dynamique exprimeacutee ici suit le mecircme principe que pour les association 1NContrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p44)

33 Transformation des associations 0111

Le plus souvent cest la meacutethode par les deux relations qui est la plus adapteacutee on choisira toujours la relation cocircteacute 01 pour ecirctre reacutefeacuterenccedilante

Il est possible dutiliser la fusion dans ce cas les cleacutes cocircteacute 01 deviennent des attributs il ne UNIQUE

peuvent plus ecirctre cleacutes pouvant ecirctre NULL

Association 011

Classe1(abc=gtClasse2) avec c KEY

Classe2(cd)

ou

Classe12(cdab) avec a UNIQUE

34 Transformation des associations 0101

On choisit la solution avec deux relations dun cocircteacute ou de lautre la cleacute eacutetrangegravere est associeacute agrave la contrainte ce nest pas une cleacute car elle peut ecirctre nulleUNIQUE

Il nest pas souhaitable de choisir la fusion lune des deux relations pouvant ecirctre nulle on ne pourrait plus trouver de cleacute naturelle

Association 0101

Classe1(abc=gtClasse2) avec c UNIQUE

Classe2(cd)

ou

Compleacutement Contrainte dynamique

Meacutethode Association 0111

Meacutethode Association 0101

Exemple de choix pour une relation 11

21

-

- -

-

-

Classe1(ab)

Classe2(cda=gtClasse1) avec a UNIQUE

35 Exemple de choix pour une relation 11

Soit deux entiteacutes homme et femme et une association mariage de cardinaliteacute 1111 entre ces deux entiteacutes (hommes et femmes sont donc obligatoirement marieacutes)Les entiteacutes homme et femme sont identifieacutees par un attribut nom (dans ce modegravele chaque personne a un nom unique on pourrait remplacer le nom par un identifiant comme le numeacutero de seacutecuriteacute social ou par une cleacute artificielle pour ecirctre plus proche de la reacutealiteacute)

Bien que de type 1111 le choix de la fusion nest pas tregraves opportun car il sagit bien dobjets distincts que lon veut modeacuteliser

On choisira donc plutocirct la repreacutesentation avec deux relationsLa cleacute eacutetrangegravere pourra ecirctre du cocircteacute homme ou femme mecircme si la pratique dominante nous incite agrave la mettre du cocircteacute femmeOn pourra eacutegalement deacutecider de prendre la cleacute eacutetrangegravere comme cleacute primaire

1 homme (nom)2 femme (mariage=gthomme nom) avec nom KEY3 Contrainte PROJ(hommenom) = PROJ(femmemariage)

Si lassociation avait eacuteteacute de cardinaliteacute 0101 (certains hommes et femmes ne sont pas marieacutes) un choix similaire se serait imposeacute avec limpossibiliteacute de choisir la cleacute eacutetrangegravere comme cleacute primaire celle-ci pouvant ecirctre nulle et neacutetant donc plus candidate

1 homme (nom)2 femme (nom mariage=gthomme) avec mariage UNIQUE

4 Autres eacuteleacutements utiles en UML packages et steacutereacuteotypesObjectifs

Maicirctriser le diagramme de classe UML dans le cas de la conception de BD

41 Paquetages

Les paquetages (plus communeacutement appeleacutes ) sont des eacuteleacutements servant agrave organiser un modegravelepackage

Ils sont particuliegraverement utiles degraves que le modegravele comporte de nombreuses classes et que celles-ci peuvent ecirctre trieacutees selon plusieurs aspects structurants

Exemple

Exemple

Deacutefinition Package

homme (nom)

femme (mariage=gthomme nom) avec nom KEY

Contrainte PROJ(hommenom) = PROJ(femmemariage)

homme (nom)

femme (nom mariage=gthomme) avec mariage UNIQUE

Steacutereacuteotype

22

Notation des paquetages en UML

Exemple dutilisation des packages

On repreacutesente chaque classe au sein dun Il est alors possible de faire une preacutesentation globale du packagemodegravele (tous les ) partielle (une partie des ) ou centreacutee sur un seul packages packages package

Pour une repreacutesentation partielle ou centreacutee sur un on repreacutesente les concerneacutes avec leurs package packagesclasses propres ainsi que toutes les classes lieacutees des autres packages (et seulement celles-ci)

Preacutesentation partielle du modegravele centreacutee sur un package

Syntaxe

Exemple

Meacutethode

Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt

23

42 Steacutereacuteotype

Un steacutereacuteotype UML est une syntaxe permettant dajouter de la seacutemantique agrave la modeacutelisation des classes Il permet de deacutefinir des afin de regrouper conceptuellement un ensemble de classes (agrave linstar types de classedune classe qui permet de regrouper conceptuellement un ensemble dobjets)

Cest une meacutecanique de meacuteta-modeacutelisation elle permet deacutetendre le meacuteta-modegravele UML cest agrave dire le modegravele conceptuel du modegravele conceptuel

Un meacuteta-modegravele est le modegravele dun modegravele Par exemple le meacuteta-modegravele UML comprend les concepts de classe attribut association cardinaliteacute composition agreacutegation contraintes annotations On mobilise ces concepts (on les instancie) pour exprimer un modegravele particulier suivant le formalisme UML

Les steacutereacuteotypes permettent donc dajouter au meacuteta-modegravele UML standard celui que tout le monde utilise des concepts locaux pour enrichir le langage de modeacutelisation que lon utilise pour reacutealiser des modegraveles

Notation dun steacutereacuteotype en UML

Un steacutereacuteotype speacutecifique enrichit le meacuteta-modegravele UML mais selon une seacutemantique qui est propre agrave celui qui la poseacute non standard donc La conseacutequence est que pour un tiers linterpreacutetation du steacutereacuteotype nest plus normaliseacutee et sera potentiellement plus facilement erroneacutee Il convient donc de ne pas abuser de cette meacutecanique

Deux ou trois steacutereacuteotypes speacutecifiques correctement deacutefinis sont faciles agrave transmettre plusieurs dizaines repreacutesenteraient un nouveau langage complet agrave apprendre pour le lecteur du modegravele

Il existe des steacutereacuteotypes fournit en standard par UML ou communeacutement utiliseacutes par les modeacutelisateurs Lavantage est quil seront compris plus largement au mecircme titre que le reste du meacuteta-modegravele (ils ont une valeur de standard)

43 Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt

Deacutefinition Steacutereacuteotype UML

Deacutefinition Meacuteta-modegravele

Syntaxe

Conseil Steacutereacuteotypes speacutecifiques et steacutereacuteotypes standard

Syntaxe

Type utilisateurs steacutereacuteotype ltltdataTypegtgt

24

Steacutereacuteotype UML permettant dexprimer une eacutenumeacuteration

Exemple de modeacutelisation UML deacutenumeacuteration

44 Type utilisateurs steacutereacuteotype ltltdataTypegtgt

Les types utilisateurs permettent de deacutefinir des types complexes propres en extension des types primaires (entier chaicircne date)

Steacutereacuteotype dataType

Steacutereacuteotype dataType (exemple)

Cette modeacutelisation est eacutequivalente agrave la modeacutelisation des attributs composeacutes directement dans la classe principale Cest une repreacutesentation plus standard en UML

Exemple

Syntaxe

Exemple

Meacutethode Attributs composeacutes

Synthegravese sur la modalisation UML et relationnelle

25

Quelques eacuteleacutements de stylistique UML

26

-

- -

-

-

-

- - -

- - - -

1

2

3

5 Synthegravese sur la modalisation UML et relationnelle51 Quelques eacuteleacutements de stylistique UML

Toutes les associations doivent ecirctre nommeacutees (sauf composition heacuteritage agreacutegation)Ne pas utiliser de nom geacuteneacuterique pour les Classes comme Entiteacute Classe Objet TrucEacuteviter les noms geacuteneacuteriques pour les associations (comme est associeacute agrave)Attention au sens des compositions et agreacutegation le losange est cocircteacute ensemble et noubliez pas les cardinaliteacutes notamment cocircteacute parties

Nutilisez pas le souligneacute ni les en UML pour identifier les cleacutes preacutefeacuterez la contrainte keyPreacutefeacuterez lheacuteritage aux booleacuteens de typage en UMLLes attributs deacuteriveacutes sont reacuteserveacutes aux deacuterivations simples (des attributs de la mecircme classe) si cest plus complexe preacutefeacuterez des meacutethodes (et dans le doute preacutecisez les modes de calcul sur le scheacutema ou dans une note agrave part)Donnez des exemples de contenu lorsque ce nest pas eacutevident (lorsque le couple nom dattribut et type ne permet pas de faccedilon eacutevidente de comprendre de quoi lon parle)Inutile de deacuteclarer le type booleacuteen en UML utilisez-le directement comme un type de donneacutees connu

Si tous vos heacuteritages sont exclusifs notez-le agrave part pour alleacuteger votre scheacutema (et eacuteviter labondance de XOR)

52 Attention aux cleacutes artificielles

en UML on ne pose jamais de cleacutes artificiellesen relationnel on pose rarement des cleacute artificielles sauf dans le cas de cleacutes eacutetrangegraveres vraiment trop compliqueacuteesen SQL on peut poser des cleacutes artificielles si on a une bonne raison (ce nest donc pas systeacutematique et cest agrave justifier)

On najoutera pas de cleacute artificielle en UML au moment de la modeacutelisation conceptuelle des donneacutees

Formellement en UML la notion de cleacute nexiste pas (contrairement agrave l ) elle est ajouteacutee par les E-A

pratiquants des BD

Logiquement on a pas besoin de cette notion en UML les cleacutes artificielles servent en relationnel et dans certains cas uniquementPratiquement cela peut conduire agrave des situations absurdes (comme enlever au niveau logique des cleacutes artificielles ajouteacutees au niveau conceptuel)

Attention

Conseil

Compleacutement

Fondamental

Cleacutes artificielles et niveau conceptuel

Bibliographie commenteacutee sur la modeacutelisation UML

27

-

-

- -

-

- -

-

-

3

4

5

si on fait du non-relationnel on ne doit pas ajouter de cleacutes artificielles dans certains cas (limbrication typiquement) cela arrive mecircme en relationnel avec la transformation de lheacuteritage (dans certains cas toujours)

Meacutethodologiquement il faut se concentrer agrave chaque phase sur ce qui est important donc au moment du MCD on traduit les besoins on repegravere les contraintes explicites (cleacute uniciteacute non nulliteacute) sans se preacuteoccuper de ce qui sera rendu neacutecessaire par la suite par la modeacutelisation relationnelle (les cleacutes eacutetrangegraveres par exemple) ou limpleacutementation (loptimisation par exemple) Agrave chaque jour suffit sa peine Peacutedagogiquement enfin les deacutebutants ont tendance (agrave cause des environnements de conception graphique comme phpMyAdmin notamment) agrave systeacutematiser les cleacutes artificielles en SQL (on pourrait en discuter) mais eacutegalement agrave ne pas faire le travail de recherche des cleacutes naturelles (au niveau relationnel notamment ce qui est une faute de modeacutelisation) Donc au plus tard on fait intervenir les cleacutes artificielles au plus on a une chance de penser aux cleacutes naturelles

Soit le modegravele relationnel suivant

1 Etu (id numEtu) avec numEtu cleacute 2 UV (id codeUv) avec codeUv cleacute3 Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

La question qui permet dafficher la liste des eacutetudiants (numEtu) avec leurs UVs (codeUv) neacutecessite une jointure des cleacutes artificielles Un modegravele sans ces cleacutes artificielles aurait eacuteteacute plus performant pour agrave causereacutepondre agrave cette question puisque toutes les informations se trouvent dans la relation Inscriptions

1 Etu (numEtu) 2 UV (codeUv) 3 Inscriptions (uv=gtUV etu=gtEtu)

Ne soyez pas systeacutematiqueIl est en effet freacutequent dans un projet reacuteel dadopter des cleacutes artificielles presque systeacutematiquement vous pourrez le faire en connaissance de cause quand vous aurez bien compris pourquoi cest inteacuteressant et quand ccedila ne lest pasLes cleacutes artificielles sont inteacuteressantes pour autre chose que les performances (leacutevolutiviteacute par exemple choisissez-les quand vous savez pourquoi)Les cleacutes artificielles ne dispensent pas de rechercher les cleacutes naturelles Les cleacutes artificielles ne sont pas la seule faccedilon doptimiser une base de donneacutees (indexation deacutenormalisation)

53 Bibliographie commenteacutee sur la modeacutelisation UML

Il existe de nombreux outils de modeacutelisation UML On pourra citer

logiciel Open Source et multi-plateformes facile dusage (qui marche neacuteanmoins mieux sur Linux Dia

que sur Windows)

(version gratuite)Objecteering

Cleacutes artificielles et optimisation est-il toujours plus performant dutiliser des cleacutes artificielles

Conseil

Compleacutement Outils de modeacutelisation UML

Etu (id numEtu) avec numEtu cleacute

UV (id codeUv) avec codeUv cleacute

Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

Etu (numEtu)

UV (codeUv)

Inscriptions (uv=gtUV etu=gtEtu)

Bibliographie commenteacutee sur la modeacutelisation UML

28

- - - - - -

- - - - - -

Agrave voir eacutegalement en Open Source ou (non testeacute par lauteur)ArgoUML EclipseUML

UML2 en action

Pour un aperccedilu plus deacutetailleacute des possibiliteacutes dexpression du diagramme de classe UML lire le chapitre 7 Deacuteveloppement du modegravele statique (pages 133 agrave 163)

On pourra notamment y trouver

Lassociation dagreacutegationLes proprieacuteteacutes dassociationLexpression de rocircles dans les associationsLes attributs de classeLes qualificatifsLes opeacuterations (ou meacutethodes)

Le chapitre donne de plus des conseils meacutethodologiques pour la conception (voir en particulier la synthegravese page 163)

On pourra eacutegalement y trouver

Des principes de choix de modeacutelisation entre attributs et classes et sur la segmentation des classesDes principes de seacutelection des attributs (redondance avec les associations avec les classes etc)Des principes de seacutelection des associationsDes principes de choix de cardinaliteacute (notamment pour la gestion dhistorisation)Des principes de seacutelection des relations de geacuteneacuteralisation (heacuteritage)Des principes dintroduction de meacutetaclasses (type)s

U M L e n Franccedilais

Une tregraves bonne reacutefeacuterence en ligne sur la modeacutelisation UML avec des cours des liens vers la norme etc

Le contenu deacutepasse tregraves largement lusage dUML pour la modeacutelisation de BD (et ne fait dailleurs pas de reacutefeacuterence preacutecise agrave ce sous-ensemble particulier)

On pourra consulter en particulier le chapitre sur les diagrammes de classe httpumlfreefrcoursi-p14html

UML en 5 eacutetapes

On consultera en particulier le tutoriel sur les diagrammes de classe httpdeveloppeurjournaldunetcomtutorielcpt010607cpt_umlintroshtml

Cinq petits conseils pour un scheacutema UML efficace

Compleacutement Modeacutelisation UML

Compleacutement Reacutefeacuterence UML en ligne

Compleacutement Tutoriel sur la modeacutelisation UML

Compleacutement Conseils

Synthegravese Les diagrammes de modeacutelisation conceptuelle

29

-

-

- -

-

- -

-

-

- -

-

- - - -

-

-

(chapitre 3)UML2 par la pratique

Des explications exemples et eacutetudes de cas

54 Synthegravese Les diagrammes de modeacutelisation conceptuelle

Un modegravele conceptuel peut ecirctre repreacutesenteacute sous forme de diagramme E-A ou sous forme de diagramme de classe UML

Classe ou Entiteacute

Attribut ou Proprieacuteteacute

TypeacuteMulti-valueacuteComposeacuteDeacuteriveacute

Meacutethode

ParamegravetresValeur de retour

Association

Association

VerbeCardinaliteacute

Heacuteritage

Heacuteritage dattributsHeacuteritage de meacutethodes

Composition (ou entiteacute faible)

Cardinaliteacute

Compleacutement Pratique

Exercices

30

-

-

-

-

-

-

-

1 2

1

1 Exercice Lab III[20 min]

Description du problegraveme

Un laboratoire souhaite geacuterer les meacutedicaments quil conccediloit

Un meacutedicament est deacutecrit par un nom qui permet de lidentifier En effet il nexiste pas deux meacutedicaments avec le mecircme nom Un meacutedicament comporte une description courte en franccedilais ainsi quune description longue en latin On gegravere aussi le conditionnement du meacutedicament cest agrave dire le nombre de pilules par boicircte (qui est un nombre entier)Agrave chaque meacutedicament on associe une liste deacutedieacutee de contre-indications geacuteneacuteralement plusieurs parfois aucune Les contre-indications sont trieacutees par ordre dimportance Lordre est total est strict pour un meacutedicament donc chaque contre-indication possegravede une importance et il nexiste pas deux contre-indications associeacutees au mecircme meacutedicament avec la mecircme importanceTout meacutedicament possegravede au moins un composant souvent plusieurs Un composant est identifieacute par un code unique et possegravede un intituleacute Tout composant peut intervenir dans la fabrication de plusieurs meacutedicaments Il existe des composants qui ne sont pas utiliseacutes pour fabriquer des meacutedicaments et que lon veut quand mecircme geacuterer

Donneacutees de test

Afin de mateacuterialiser notre base de donneacutees nous obtenons les descriptions suivantes

Le a pour description courte et pour description longue Chourix Meacutedicament contre la chute des chouxlaquo raquoVivamus fermentum semper porta Nunc diam velit adipiscing ut tristique vitae sagittis vel odio laquo

Il est conditionneacute en boicircte de 13Maecenas convallis ullamcorper ultricies Curabitur ornare raquoSes contre-indications sont

Le Chourix ne doit jamais ecirctre pris apregraves minuitLe Chourix ne doit jamais ecirctre mis au contact avec de leau

Ses composants sont le et le HG79 SN50Le a pour description courte et pour Tropas Meacutedicament contre les dysfonctionnements intellectuelslaquo raquodescription longue Suspendisse lectus leo consectetur in tempor sit amet placerat quis neque Etiam laquo

Il est conditionneacute en boicircte de 42luctus porttitor lorem sed suscipit est rutrum non raquoSes contre-indications sont

Le Tropas doit ecirctre gardeacute agrave labri de la lumiegravere du soleil

Son unique composant est le HG79Les composants existants sont

HG79 Vif-argent alleacutegeacute

ExercicesII

Exercice Eacutetudiants et UVs (introduction)

31

- - -

- - HG81 Vif-argent alourdi

SN50 Pur eacutetain

Question 1

Question 2

Question 3

2 Exercice Eacutetudiants et UVs (introduction)[20 min]

On dispose du scheacutema UML ci-apregraves qui deacutecrit des eacutetudiants des UV les notes obtenues par les eacutetudiants agrave ces UV et les diplocircmes dorigine de ces eacutetudiants

Eacutetudiants et UVs

key deacutesigne des cleacutes candidates ici toutes les cleacutes ne sont composeacutees que dun seul attributlocal key deacutesigne une cleacute localeun semestre est de la forme PYYYY ou AYYYY (ougrave YYYY deacutesigneacute une anneacutee sur 4 chiffre) exemple A2013 P2014

Rappel Notion de cleacute locale dans classes dassociation (cf p49)

Effectuez le modegravele conceptuel en UML de ce problegraveme

Indices

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans deacutedieacuteeles donneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition

[ ]solution ndeg4 [ ] p56

En mobilisant les regravegles adeacutequates proposer un modegravele logique de donneacutees correspondant en relationnel Le repeacuterage des domaines et des cleacutes est obligatoire

[ ]solution ndeg5 [ ] p57

Dessiner des tableaux remplis avec les donneacutees fournies en exemple afin de montrer que le modegravele fonctionne selon le besoin exprimeacute initialement On pourra mettre le premier mot seulement des descriptions pour gagner du temps

[ ]solution ndeg6 [ ] p57

Exercice Super-heacuteros relationnels I

32

-

-

Question

3 Exercice Super-heacuteros relationnels I[20 min]

La gamme de super-heacuteros GARVEL veut reacutealiser la base de donneacutees de leurs figurines articuleacutees La socieacuteteacute a fait reacutealiser un modegravele UML qui doit servir de point de deacutepart agrave la mise en œuvre

Modegravele UML Figurines GARVEL

Question

4 Exercice Objets Numeacuteriques Libres[30 min]

Lassociation ONL (Objets Numeacuteriques Libres) est une association de promotion des logiciels libres Elle souhaite exposer sur un site Internet une liste de logiciels libres Ce site sera adosseacute agrave une base de donneacutees relationnelle ou relationnel-objet La premiegravere eacutetape de sa deacutemarche est de reacutealiser un modegravele conceptuel repreacutesentant ce quelle souhaite faire

La base de donneacutees permet de geacuterer des applicationsLes applications sont identifieacutees par leur nom (LibreOffice Gimp) et leur version (10 21) et comportent une description courte et une URL Tous les attributs sont obligatoires Chaque application a une URL uniqueLa base de donneacutees permet de geacuterer des librairies

Traduire le scheacutema en modegravele logique relationnel ( )MLD1

On choisira obligatoirement les cleacutes primaires parmi celles neacutecessitant le plus petit nombre de bits possible pour leur codage

[ ]solution ndeg7 [ ] p57

Transformer le modegravele UML en modegravele relationnel (justifier les passages non triviaux en particulier la relation dheacuteritage)

[ ]solution ndeg8 [ ] p58

Exercice Objets Numeacuteriques Libres

33

-

-

-

-

-

-

-

-

-

-

-

-

Les librairies sont des logiciels mais pas des applications Elles ont les mecircmes attributs que les applications (nom version description courte URL) mais les URL ne sont pas neacutecessairement uniques Les applications peuvent deacutependre de librairies ou dautres applications et les librairies peuvent deacutependre dautres librairies (mais pas dune application)La base de donneacutees permet de geacuterer des composantsLes composants sont inteacutegreacutes agrave une application ou librairie Les composants ont un code interne agrave lapplication ou la librairie quil servent une version et une description courte et une URL Le code et le numeacutero de version permettent didentifier localement le composant au sein de la librairie ou de lapplication la description courte et lURL sont optionnellesLa base de donneacutees permet de geacuterer des licencesLes applications librairies et composants sont attacheacutes agrave une ou plusieurs licences identifieacutees par leur nom (GPL MPL) leur version et leur langue et comportant le texte inteacutegral de la licence Les versions des logiciels et licences sont de type numeacutero de licence majeur point numeacutero de licence mineur comme 10 ou 22La base de donneacutees permet de geacuterer des cateacutegoriesChaque logiciel est rangeacute dans une cateacutegorie principale et plusieurs cateacutegories secondaires Exemple de cateacutegories bureautique dessin multimeacutedia physique

Exemple (factice) de donneacutees

Applications

Scenari 41 une chaicircne eacuteditoriale XML httpscenariorg deacutepend de Libreoffice 43 et de ImageMagick 68Libreoffice 43 une suite bureautique WYSIWYG httplibreofficeorg

Librairie

ImageMagick 68 permet de creacuteer de convertir de modifier et dafficher des images http imagemagickorg

Composant

impng 02 est un composant de ImageMagick 68 permet de compresser une image au format PNG

Toutes ces applications librairies et composants sont disponibles sous une licence LGPL 30 et GPL 30 franccedilaisesToutes ces applications et librairies sont rangeacutees dans la cateacutegorie principale document Scenari est rangeacute dans la cateacutegorie secondaire Eacutedition WYSIWYM Libreoffice dans la cateacutegorie secondaire Bureautique ImageMagick dans la cateacutegorie secondaire Multimeacutedia

Question

Reacutealiser un MCD en UML[ ]solution ndeg9 [ ] p58

Devoirs

34

1 Exercice Arbre de scegravene 3D[30 minutes]

On souhaite pouvoir geacuterer les diffeacuterents eacuteleacutements composant des scegravenes 3D dans une base de donneacutees Une scegravene contient des objets qui eux-mecircmes peuvent appartenir agrave plusieurs scegravenes (au moins une) mais il ne peut y avoir plusieurs fois le mecircme objet dans une mecircme scegravene Dans chaque scegravene les objets peuvent ecirctre visibles ou invisibles Les scegravenes et les objets sont identifieacutes de maniegravere unique par un nom Une scegravene peut ecirctre active ou inactive Un objet a comme proprieacuteteacute une position dans lespace repreacutesenteacutee par un vecteur de reacuteels agrave trois composantes (x y z) Les objets sont organiseacutes de maniegravere hieacuterarchique un objet peut ecirctre parent de plusieurs objets et chaque objet peut avoir au plus un parent Des scripts peuvent ecirctre associeacutes agrave un objet ou agrave une scegravene (agrave lun ou agrave lautre mais pas aux deux) Un script est identifieacute de maniegravere unique par un nom et possegravede eacutegalement un attribut permettant de connaicirctre son eacutetat (actif ou inactif) Un personnage est un objet particulier qui possegravede des animations Une animation est relative agrave un personnage et est identifieacutee de maniegravere locale par un nom Agrave un objet est associeacute un maillage et celui-ci peut ecirctre utiliseacute par plusieurs objets Un maillage est identifieacute de maniegravere unique par un nom et est composeacute de plusieurs eacuteleacutements Chaque eacuteleacutement est relatif agrave un maillage et est identifieacute de maniegravere locale par un numeacutero Il existe exactement trois types deacuteleacutement des nœuds des arrecirctes et des faces Une face est deacutelimiteacutee par trois arrecirctes et chaque arrecircte est deacutelimiteacutee par deux nœuds Plusieurs arrecirctes peuvent partager un mecircme nœud et plusieurs faces peuvent partager une mecircme arrecircte Afin deacutevaluer la complexiteacute dune scegravene on souhaite pouvoir calculer le nombre de faces afficheacutees pour une scegravene donneacutee (cest-agrave-dire la somme du nombre de faces du maillage associeacute aux objets visibles de la scegravene) Un maillage possegravede plusieurs mateacuteriaux identifieacutes de maniegravere unique par un nom Un mateacuteriau peut ecirctre associeacute agrave plusieurs maillages Un mateacuteriau est caracteacuteriseacute par une couleur deacutefinie par un vecteur dentiers agrave quatre composantes rouge vert bleu alpha Un mateacuteriau peut posseacuteder une texture et celle-ci peut ecirctre utiliseacutee par plusieurs mateacuteriaux Une texture est identifieacutee de maniegravere unique par un nom et possegravede comme attribut une image

Question 1

Question 2

DevoirsIII

Proposez une clarification de ce problegraveme On pourra reclasser les informations par grande cateacutegorie scegravene objets scripts

Eacutetablissez un modegravele conceptuel en UML de ce problegraveme

Compleacutement Exercices de modeacutelisation suppleacutementaire

35

1 Exercice Appartements agrave louer[30 min]

Une agence dimmobilier (ventes et locations) veut geacuterer son parc dappartements dans une base de donneacutees Chaque appartement possegravede plusieurs piegraveces qui peuvent ecirctre des piegraveces dhabitation des piegraveces de rangement ou des commoditeacutes

Chaque piegravece a une superficie un nombre de prises eacutelectriques et des meubles Pour ces derniers on veut enregistrer le nom du modegravele et le type (chaise lit four etc) Rien nempecircche quune piegravece comporte plusieurs meubles identiques (par exemple plusieurs chaises PIN IQUEA) Les piegraveces dhabitation ont une ou plusieurs fenecirctres les piegraveces de rangement ont une ou plusieurs eacutetagegraveres et une surface de rangement utile totale On veut aussi savoir dans quelles piegraveces de rangement se situent les tableaux eacutelectriques de lappartement Finalement les piegraveces commoditeacutes peuvent ecirctre de trois types cuisine toilette ou salle de bain

Lagence veut aussi enregistrer les portes entre les diffeacuterentes piegraveces Une porte peut ecirctre agrave simple battant double battant coulissante ou une simple ouverture

Chaque appartement a une adresse une superficie totale (qui est la somme des superficies des piegraveces) et un type qui est la lettre T suivie du nombre de piegraveces dhabitation de lappartement Pour un appartement donneacute chaque piegravece est identifieacutee par un numeacutero (commenccedilant au numeacutero 1)

Lagence veut eacutegalement enregistrer le quartier ougrave se trouve lappartement auquel est lieacute un prix par megravetre carreacute Finalement elle veut garder un historique de lhistoire de lappartement les peacuteriodes pour lesquelles il est libre occupeacute en travaux ou vendu

Question

2 Exercice Objectifs[40 min]

Vous prenez la preacutesidence de lassociation Objectifs dont lobjet est daider ses eacutetudiants membres agrave mener des projets dans le cadre de leurs eacutetudes

Compleacutement Exercices de modeacutelisation suppleacutementaire

IV

Reacutealisez le diagramme UML reacutepondant aux besoins de cette agence[ ]solution ndeg10 [ ] p59

Exercice Objectifs

36

- - -

-

-

- - -

Vous constatez en arrivant dans lassociation que personne ne sait exactement quels sont les projets en cours ni qui fait quoi dans les projets Vous ne parvenez pas non plus agrave obtenir une liste exacte des partenaires sur lesquels lassociation peut compter La seule chose sur laquelle vous parvenez agrave mettre la main est un fichier tableur vaguement agrave jour

Vous deacutecidez quil est plus que temps de mettre en place une base de donneacutees afin dassurer la bonne gestion des informations les plus importantes pour lassociation Vous vous attachez pour cela agrave reacutealiser une analyse des besoins

Analysez les documents ci-apregraves

Etat des projets

Eacutetat des projets de lassociation Objectifs

Recueil de besoins

Agrave partir de leacutetude du fonctionnement actuel de lassociation vous relevez les choses importantes agrave geacuterer suivantes

Les membres de lassociation geacuteneacuteralement identifieacutes par leur preacutenomLes projets geacutereacutes par lassociation avec des dates de deacutebut et de fin preacutecises et un chef de projetLe deacutetail des tacircches de chaque projet avec leurs dates de deacutebut et de fin aussi et la liste de tous les membres qui y participentLa liste des partenaires des projets avec leur rocircle preacutecis pour chacun des projets auxquels ils participent

Afin de mieux geacuterer les attributions des projets il serait eacutegalement inteacuteressant de creacuteer une liste des speacutecialiteacutes correspondant agrave ce qui ce fait dans lassociation et daffecter une speacutecialiteacute agrave chaque membre ainsi quune agrave chaque projet pour voir si ce sont bien les membres les mieux adapteacutes qui travaille sur les projets

Recueil de donneacutees

Les discussions avec les anciens membres de lassociation vous apprennent les choses suivantes

Lassociation a termineacute de geacuterer les trois projets Comeacutedie Musicale geacutereacutee par Nathalie sur les trois premiers mois du semestre dautomne 1001 Science en fecircte geacutereacutee par Pierre sur tout le semestre de printemps 1003 et Nuit du picolo geacutereacutee par Julien en novembre 1001Les speacutecialiteacutes recenseacutees pour le moment sont Ville Universiteacute Sport Entreprise Culture InternationalIl faut au moins dix membres agrave lassociation (sinon elle ferme) recruter ceux qui manquentAidez lassociation agrave diviser ses projets en tacircches

Exercice Objectifs

37

- Les partenaires suivants aident ou ont aideacute lassociation la mairie pour la comeacutedie musicale et la science en fecircte qui apporte un soutien financier le ministegravere de la culture qui apporte son soutien logistique agrave la science en fecircte lassociation des commerccedilants de la ville qui apporte son soutien publicitaire agrave la comeacutedie musicale 1664 qui offre ses biegraveres agrave moitieacute prix pour la nuit du Picolo

Question 1

Question 2

Question 3

Afin de preacuteparer une analyse des besoins sommaire listez les donneacutees que vous devrez geacuterer agrave laide des documents et recueils de discussion agrave votre disposition Faites des hypothegraveses lorsque les donneacutees sont incomplegravetes ou incoheacuterentes

[ ]solution ndeg11 [ ] p59

Reacutealiser le MCD en UML et en E-A agrave partir des donneacutees preacutepareacutees dans la question preacuteceacutedente[ ]solution ndeg12 [ ] p60

Reacutealiser le MLD en relationnel en traduisant votre MCD[ ]solution ndeg13 [ ] p61

Contenus annexes

38Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

- - -

gt Attributs

Un attribut est une information eacuteleacutementaire qui caracteacuterise une classe et dont la valeur deacutepend de lobjet instancieacute

Le domaine des valeurs que peut prendre lattribut est fixeacute a prioriUn attribut est typeacute

Il peut prendre plusieurs valeurs distinctes dans son domaineUn attribut peut ecirctre multivalueacute Sa valeur alors est une fonction sur dautres attributs de la classeUn attribut peut ecirctre deacuteriveacute

(ou composite) Il joue alors le rocircle dun groupe dattributs (par Un attribut peut ecirctre composeacuteexemple une adresse peut ecirctre un attribut composeacute des attributs numeacutero type de voie nom de la voie) Cette notion renvoie agrave la notion de variable de type dans les langages de Record

programmation classiques

En UML on preacutefegravere lusage de meacutethodes aux attributs deacuteriveacutes On utilisera toujours des meacutethodes degraves que la valeur de lattribut deacuteriveacute deacutepend dautres attributs exteacuterieurs agrave sa classeEn UML on preacutefegravere lusage de compositions aux attributs composeacutes On utilisera toujours des compositions pour les attributs composeacutes et multivalueacutes

1 attributtype2 attribut_multivalueacute[nbMinValeursnbMaxValeurs]type3 attribut_deacuteriveacutetype4 attribut_composeacute5   - sous-attribut1type6   - sous-attribut2type7   -

Contenus annexes

Deacutefinition Attribut

Attention On utilise peu les attributs deacuteriveacutes et composeacutes en UML

Syntaxe

attributtype

attribut_multivalueacute[nbMinValeursnbMaxValeurs]type

attribut_deacuteriveacutetype

attribut_composeacute

  - sous-attribut1type

  - sous-attribut2type

  -

Contenus annexes

39Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Repreacutesentation dattributs en UML

Dans cet exemple les attributs Nom Preacutenom sont de type lun de 20 caractegraveres et lautre de 10 stringtandis que DateNaissance est de type et Age de type Preacutenom est un attribut multivalueacute ici date integerune personne peut avoir de 1 agrave 3 preacutenoms Age est un attribut deacuteriveacute il est calculeacute par une fonction sur DateNaissance

Meacutethodes (cf p39)

Composition (cf p5)

gt Meacutethodes

Une meacutethode (ou opeacuteration) est une fonction associeacutee agrave une classe dobjet qui permet dagir sur les objets de la classe ou qui permet agrave ces objets de renvoyer des valeurs (calculeacutees en fonction de paramegravetres)

1 methode(paramegravetres)type

Pour la modeacutelisation des bases de donneacutees les meacutethodes sont surtout utiliseacutees pour repreacutesenter des donneacutees calculeacutees (agrave linstar des attributs deacuteriveacutees) ou pour mettre en exergue des fonctions importantes du systegraveme cible Seules les meacutethodes les plus importantes sont repreacutesenteacutees lapproche est moins systeacutematique quen modeacutelisation objet par exemple

Lors de la transformation du modegravele conceptuel UML en modegravele logique relationnel les meacutethodes ne Leur repeacuterage au niveau conceptuel sert donc surtout daide-seront geacuteneacuteralement pas impleacutementeacutees

meacutemoire pour limpleacutementation au niveau applicatif

Exemple La classe Personne

Compleacutement Voir aussi

Deacutefinition Meacutethode

Syntaxe

Remarque Meacutethodes et modeacutelisation de BD

Remarque Meacutethodes relationnel relationnel-objet

methode(paramegravetres)type

Contenus annexes

40Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Au contraire un modegravele logique relationnel-objet permettra limpleacutementation de meacutethodes directement associeacutees agrave des tables Leur repeacuterage au niveau conceptuel est donc encore plus important

Transformation des meacutethodes par des vues (cf p40)

gt Transformation des meacutethodes par des vues

Lorsquune meacutethode est speacutecifieacutee sur un diagramme UML pour une classe C si cette meacutethode est une fonction relationnelle (elle renvoie une unique valeur et elle peut ecirctre reacutesolue par une requecircte SQL) alors on creacutee une vue qui reprend les attributs de la classe C et ajoute des colonnes calculeacutees pour les meacutethodes

Les attributs deacuteriveacutes eacutetant apparenteacutes agrave des meacutethodes ils peuvent eacutegalement ecirctre geacutereacutes par des vues

gt Classe dassociation

On utilise la notation des classes dassociation lorsque lon souhaite ajouter des proprieacuteteacutes agrave une association

Notation dune classe dassociation en UML

On reacuteserve en geacuteneacuteral les classes dassociation aux associations NM

Il est toujours possible de reacuteduire une classe dassociation sur une association 1N en migrant ses attributs sur la classe cocircteacute N et cest en geacuteneacuteral plus lisible ainsi

Compleacutement

Meacutethode

Remarque Attributs deacuteriveacutes

Deacutefinition Classe dassociation

Syntaxe Notation dune classe dassociation en UML

Meacutethode

Contenus annexes

41Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

-

Emplois

Selon le standard UML une classe dassociation est une classe et agrave ce titre elle peut ecirctre mobiliseacutee dans dautres associations ou dans des heacuteritages Nous deacuteconseillons neacuteanmoins ces notations qui ont tendance agrave complexifier la lecture et la transformation du diagramme

Nous conseillons donc de ne jamais associer une classe dassociation

gt Transformation des attributs

Pour chaque attribut eacuteleacutementaire et monovalueacute dune classe

on creacutee un attribut correspondant

Attribut

Classe1(ab)

Pour chaque attribut composite comprenant N sous-attributs dune classe

on creacutee N attributs correspondantsdont les noms sont la concateacutenation du nom de lattribut composite avec celui du sous-attribut

Exemple Exemple de classe dassociation

Conseil

Meacutethode Attributs simples

Meacutethode Attributs composites

Contenus annexes

42Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- - - -

Attribut composeacute

Classe1(ab_b1b_b2)

Pour chaque attribut multivalueacute b dune classe C

on creacutee une nouvelle relation RBqui comprend un attribut monovalueacute correspondant agrave bplus la cleacute de la relation repreacutesentant C la cleacute de RB est la concateacutenation des deux attributs

Attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Dans le cas ougrave le nombre maximum de est fini et petit on peut eacutegalement adopter la transformation b

suivante Classe1(ab1b2b3b4b5b6b7b8b9b10)

Si le nombre dattributs est infini ( ) cest impossible sil est trop grand ce nest pas souhaitableb[1]

On combine les regravegles eacutenonceacutees pour les attributs composeacutes et pour les attributs multivalueacutes

Attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Transformation des compositions (cf p42)

Meacutethode Attributs multivalueacutes

Meacutethode Attributs multivalueacutes (meacutethode alternative)

Meacutethode Attributs composeacutes multivalueacutes

Rappel Voir aussi

Contenus annexes

43Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

gt Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Compleacutement Attributs multivalueacutes et composeacutes

Contenus annexes

44Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

Rappel Voir aussi

Rappel

Meacutethode

Contenus annexes

45Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p48)

gt Transformation des associations 1N

Pour chaque association binaire de type 1N

on ajoute agrave la relation cocircteacute N une cleacute eacutetrangegravere vers la relation cocircteacute 1

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Meacutethode

Contenus annexes

46Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Association 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Contrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p46)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

R1

Compleacutement

Rappel

Meacutethode

Contenus annexes

47Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p47)

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Deacutefinition Projection

Contenus annexes

48Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Deacutefinition Projection

Contenus annexes

49Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Transformation des classes dassociation

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de lassociation NM

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Meacutethode Classe dassociation NM

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Transformation des associations 1111

19

- -

- - - - - -

- on choisit une cleacute parmi les cleacutes candidates

Classe12(abcd) avec c UNIQUE ou KEY

ou

Classe21(cdab) avec a UNIQUE ou KEY

Ce choix entre les deux meacutethodes sera conduit par une appreacuteciation du rapport entre

La complexiteacute introduite par le fait davoir deux relations lagrave ou une suffitLa pertinence de la seacuteparation des deux relations dun point de vue seacutemantiqueLes pertes de performance dues agrave leacuteclatement des relationsLes pertes de performance dues au fait davoir une grande relationLes questions de seacutecuriteacute et de sucircreteacute factoriseacutees ou non au niveau des deux relations

Dans le cas dune association 1111 il faudra ajouter une contrainte compleacutementaire

Transformation des associations 1111 (cf p19)

32 Transformation des associations 1111

Le plus souvent cest meacutethode par des relations qui est la plus adapteacutee agrave ce casfusionLorsquelle ne lest pas et que lon choisit deux relations il faut ajouter une contrainte dynamique qui controcirclera que les deux relations sont bien toujours instancieacutees ensembles Notons que la cleacute eacutetrangegravere peut ecirctre choisie comme cleacute primaire

Association 11

Classe12(abcd) avec c KEY

ou

Classe21(cdab) avec a KEY

ou

Classe1(abc=gtClasse2) avec c KEY

Classe2(cd)

Contrainte PROJECTION(Classe1c) = PROJECTION(Classe2c)

ou

Classe1(ab)

Remarque Fusion des relations dans le cas de la traduction de lassociation 11

Compleacutement

Meacutethode Association 1111

Transformation des associations 0111

20

-

-

-

-

Classe2(cda=gtClasse1) avec a KEY

Contrainte PROJECTION(Classe1a) = PROJECTION(Classe2a)

La contrainte dynamique exprimeacutee ici suit le mecircme principe que pour les association 1NContrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p44)

33 Transformation des associations 0111

Le plus souvent cest la meacutethode par les deux relations qui est la plus adapteacutee on choisira toujours la relation cocircteacute 01 pour ecirctre reacutefeacuterenccedilante

Il est possible dutiliser la fusion dans ce cas les cleacutes cocircteacute 01 deviennent des attributs il ne UNIQUE

peuvent plus ecirctre cleacutes pouvant ecirctre NULL

Association 011

Classe1(abc=gtClasse2) avec c KEY

Classe2(cd)

ou

Classe12(cdab) avec a UNIQUE

34 Transformation des associations 0101

On choisit la solution avec deux relations dun cocircteacute ou de lautre la cleacute eacutetrangegravere est associeacute agrave la contrainte ce nest pas une cleacute car elle peut ecirctre nulleUNIQUE

Il nest pas souhaitable de choisir la fusion lune des deux relations pouvant ecirctre nulle on ne pourrait plus trouver de cleacute naturelle

Association 0101

Classe1(abc=gtClasse2) avec c UNIQUE

Classe2(cd)

ou

Compleacutement Contrainte dynamique

Meacutethode Association 0111

Meacutethode Association 0101

Exemple de choix pour une relation 11

21

-

- -

-

-

Classe1(ab)

Classe2(cda=gtClasse1) avec a UNIQUE

35 Exemple de choix pour une relation 11

Soit deux entiteacutes homme et femme et une association mariage de cardinaliteacute 1111 entre ces deux entiteacutes (hommes et femmes sont donc obligatoirement marieacutes)Les entiteacutes homme et femme sont identifieacutees par un attribut nom (dans ce modegravele chaque personne a un nom unique on pourrait remplacer le nom par un identifiant comme le numeacutero de seacutecuriteacute social ou par une cleacute artificielle pour ecirctre plus proche de la reacutealiteacute)

Bien que de type 1111 le choix de la fusion nest pas tregraves opportun car il sagit bien dobjets distincts que lon veut modeacuteliser

On choisira donc plutocirct la repreacutesentation avec deux relationsLa cleacute eacutetrangegravere pourra ecirctre du cocircteacute homme ou femme mecircme si la pratique dominante nous incite agrave la mettre du cocircteacute femmeOn pourra eacutegalement deacutecider de prendre la cleacute eacutetrangegravere comme cleacute primaire

1 homme (nom)2 femme (mariage=gthomme nom) avec nom KEY3 Contrainte PROJ(hommenom) = PROJ(femmemariage)

Si lassociation avait eacuteteacute de cardinaliteacute 0101 (certains hommes et femmes ne sont pas marieacutes) un choix similaire se serait imposeacute avec limpossibiliteacute de choisir la cleacute eacutetrangegravere comme cleacute primaire celle-ci pouvant ecirctre nulle et neacutetant donc plus candidate

1 homme (nom)2 femme (nom mariage=gthomme) avec mariage UNIQUE

4 Autres eacuteleacutements utiles en UML packages et steacutereacuteotypesObjectifs

Maicirctriser le diagramme de classe UML dans le cas de la conception de BD

41 Paquetages

Les paquetages (plus communeacutement appeleacutes ) sont des eacuteleacutements servant agrave organiser un modegravelepackage

Ils sont particuliegraverement utiles degraves que le modegravele comporte de nombreuses classes et que celles-ci peuvent ecirctre trieacutees selon plusieurs aspects structurants

Exemple

Exemple

Deacutefinition Package

homme (nom)

femme (mariage=gthomme nom) avec nom KEY

Contrainte PROJ(hommenom) = PROJ(femmemariage)

homme (nom)

femme (nom mariage=gthomme) avec mariage UNIQUE

Steacutereacuteotype

22

Notation des paquetages en UML

Exemple dutilisation des packages

On repreacutesente chaque classe au sein dun Il est alors possible de faire une preacutesentation globale du packagemodegravele (tous les ) partielle (une partie des ) ou centreacutee sur un seul packages packages package

Pour une repreacutesentation partielle ou centreacutee sur un on repreacutesente les concerneacutes avec leurs package packagesclasses propres ainsi que toutes les classes lieacutees des autres packages (et seulement celles-ci)

Preacutesentation partielle du modegravele centreacutee sur un package

Syntaxe

Exemple

Meacutethode

Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt

23

42 Steacutereacuteotype

Un steacutereacuteotype UML est une syntaxe permettant dajouter de la seacutemantique agrave la modeacutelisation des classes Il permet de deacutefinir des afin de regrouper conceptuellement un ensemble de classes (agrave linstar types de classedune classe qui permet de regrouper conceptuellement un ensemble dobjets)

Cest une meacutecanique de meacuteta-modeacutelisation elle permet deacutetendre le meacuteta-modegravele UML cest agrave dire le modegravele conceptuel du modegravele conceptuel

Un meacuteta-modegravele est le modegravele dun modegravele Par exemple le meacuteta-modegravele UML comprend les concepts de classe attribut association cardinaliteacute composition agreacutegation contraintes annotations On mobilise ces concepts (on les instancie) pour exprimer un modegravele particulier suivant le formalisme UML

Les steacutereacuteotypes permettent donc dajouter au meacuteta-modegravele UML standard celui que tout le monde utilise des concepts locaux pour enrichir le langage de modeacutelisation que lon utilise pour reacutealiser des modegraveles

Notation dun steacutereacuteotype en UML

Un steacutereacuteotype speacutecifique enrichit le meacuteta-modegravele UML mais selon une seacutemantique qui est propre agrave celui qui la poseacute non standard donc La conseacutequence est que pour un tiers linterpreacutetation du steacutereacuteotype nest plus normaliseacutee et sera potentiellement plus facilement erroneacutee Il convient donc de ne pas abuser de cette meacutecanique

Deux ou trois steacutereacuteotypes speacutecifiques correctement deacutefinis sont faciles agrave transmettre plusieurs dizaines repreacutesenteraient un nouveau langage complet agrave apprendre pour le lecteur du modegravele

Il existe des steacutereacuteotypes fournit en standard par UML ou communeacutement utiliseacutes par les modeacutelisateurs Lavantage est quil seront compris plus largement au mecircme titre que le reste du meacuteta-modegravele (ils ont une valeur de standard)

43 Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt

Deacutefinition Steacutereacuteotype UML

Deacutefinition Meacuteta-modegravele

Syntaxe

Conseil Steacutereacuteotypes speacutecifiques et steacutereacuteotypes standard

Syntaxe

Type utilisateurs steacutereacuteotype ltltdataTypegtgt

24

Steacutereacuteotype UML permettant dexprimer une eacutenumeacuteration

Exemple de modeacutelisation UML deacutenumeacuteration

44 Type utilisateurs steacutereacuteotype ltltdataTypegtgt

Les types utilisateurs permettent de deacutefinir des types complexes propres en extension des types primaires (entier chaicircne date)

Steacutereacuteotype dataType

Steacutereacuteotype dataType (exemple)

Cette modeacutelisation est eacutequivalente agrave la modeacutelisation des attributs composeacutes directement dans la classe principale Cest une repreacutesentation plus standard en UML

Exemple

Syntaxe

Exemple

Meacutethode Attributs composeacutes

Synthegravese sur la modalisation UML et relationnelle

25

Quelques eacuteleacutements de stylistique UML

26

-

- -

-

-

-

- - -

- - - -

1

2

3

5 Synthegravese sur la modalisation UML et relationnelle51 Quelques eacuteleacutements de stylistique UML

Toutes les associations doivent ecirctre nommeacutees (sauf composition heacuteritage agreacutegation)Ne pas utiliser de nom geacuteneacuterique pour les Classes comme Entiteacute Classe Objet TrucEacuteviter les noms geacuteneacuteriques pour les associations (comme est associeacute agrave)Attention au sens des compositions et agreacutegation le losange est cocircteacute ensemble et noubliez pas les cardinaliteacutes notamment cocircteacute parties

Nutilisez pas le souligneacute ni les en UML pour identifier les cleacutes preacutefeacuterez la contrainte keyPreacutefeacuterez lheacuteritage aux booleacuteens de typage en UMLLes attributs deacuteriveacutes sont reacuteserveacutes aux deacuterivations simples (des attributs de la mecircme classe) si cest plus complexe preacutefeacuterez des meacutethodes (et dans le doute preacutecisez les modes de calcul sur le scheacutema ou dans une note agrave part)Donnez des exemples de contenu lorsque ce nest pas eacutevident (lorsque le couple nom dattribut et type ne permet pas de faccedilon eacutevidente de comprendre de quoi lon parle)Inutile de deacuteclarer le type booleacuteen en UML utilisez-le directement comme un type de donneacutees connu

Si tous vos heacuteritages sont exclusifs notez-le agrave part pour alleacuteger votre scheacutema (et eacuteviter labondance de XOR)

52 Attention aux cleacutes artificielles

en UML on ne pose jamais de cleacutes artificiellesen relationnel on pose rarement des cleacute artificielles sauf dans le cas de cleacutes eacutetrangegraveres vraiment trop compliqueacuteesen SQL on peut poser des cleacutes artificielles si on a une bonne raison (ce nest donc pas systeacutematique et cest agrave justifier)

On najoutera pas de cleacute artificielle en UML au moment de la modeacutelisation conceptuelle des donneacutees

Formellement en UML la notion de cleacute nexiste pas (contrairement agrave l ) elle est ajouteacutee par les E-A

pratiquants des BD

Logiquement on a pas besoin de cette notion en UML les cleacutes artificielles servent en relationnel et dans certains cas uniquementPratiquement cela peut conduire agrave des situations absurdes (comme enlever au niveau logique des cleacutes artificielles ajouteacutees au niveau conceptuel)

Attention

Conseil

Compleacutement

Fondamental

Cleacutes artificielles et niveau conceptuel

Bibliographie commenteacutee sur la modeacutelisation UML

27

-

-

- -

-

- -

-

-

3

4

5

si on fait du non-relationnel on ne doit pas ajouter de cleacutes artificielles dans certains cas (limbrication typiquement) cela arrive mecircme en relationnel avec la transformation de lheacuteritage (dans certains cas toujours)

Meacutethodologiquement il faut se concentrer agrave chaque phase sur ce qui est important donc au moment du MCD on traduit les besoins on repegravere les contraintes explicites (cleacute uniciteacute non nulliteacute) sans se preacuteoccuper de ce qui sera rendu neacutecessaire par la suite par la modeacutelisation relationnelle (les cleacutes eacutetrangegraveres par exemple) ou limpleacutementation (loptimisation par exemple) Agrave chaque jour suffit sa peine Peacutedagogiquement enfin les deacutebutants ont tendance (agrave cause des environnements de conception graphique comme phpMyAdmin notamment) agrave systeacutematiser les cleacutes artificielles en SQL (on pourrait en discuter) mais eacutegalement agrave ne pas faire le travail de recherche des cleacutes naturelles (au niveau relationnel notamment ce qui est une faute de modeacutelisation) Donc au plus tard on fait intervenir les cleacutes artificielles au plus on a une chance de penser aux cleacutes naturelles

Soit le modegravele relationnel suivant

1 Etu (id numEtu) avec numEtu cleacute 2 UV (id codeUv) avec codeUv cleacute3 Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

La question qui permet dafficher la liste des eacutetudiants (numEtu) avec leurs UVs (codeUv) neacutecessite une jointure des cleacutes artificielles Un modegravele sans ces cleacutes artificielles aurait eacuteteacute plus performant pour agrave causereacutepondre agrave cette question puisque toutes les informations se trouvent dans la relation Inscriptions

1 Etu (numEtu) 2 UV (codeUv) 3 Inscriptions (uv=gtUV etu=gtEtu)

Ne soyez pas systeacutematiqueIl est en effet freacutequent dans un projet reacuteel dadopter des cleacutes artificielles presque systeacutematiquement vous pourrez le faire en connaissance de cause quand vous aurez bien compris pourquoi cest inteacuteressant et quand ccedila ne lest pasLes cleacutes artificielles sont inteacuteressantes pour autre chose que les performances (leacutevolutiviteacute par exemple choisissez-les quand vous savez pourquoi)Les cleacutes artificielles ne dispensent pas de rechercher les cleacutes naturelles Les cleacutes artificielles ne sont pas la seule faccedilon doptimiser une base de donneacutees (indexation deacutenormalisation)

53 Bibliographie commenteacutee sur la modeacutelisation UML

Il existe de nombreux outils de modeacutelisation UML On pourra citer

logiciel Open Source et multi-plateformes facile dusage (qui marche neacuteanmoins mieux sur Linux Dia

que sur Windows)

(version gratuite)Objecteering

Cleacutes artificielles et optimisation est-il toujours plus performant dutiliser des cleacutes artificielles

Conseil

Compleacutement Outils de modeacutelisation UML

Etu (id numEtu) avec numEtu cleacute

UV (id codeUv) avec codeUv cleacute

Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

Etu (numEtu)

UV (codeUv)

Inscriptions (uv=gtUV etu=gtEtu)

Bibliographie commenteacutee sur la modeacutelisation UML

28

- - - - - -

- - - - - -

Agrave voir eacutegalement en Open Source ou (non testeacute par lauteur)ArgoUML EclipseUML

UML2 en action

Pour un aperccedilu plus deacutetailleacute des possibiliteacutes dexpression du diagramme de classe UML lire le chapitre 7 Deacuteveloppement du modegravele statique (pages 133 agrave 163)

On pourra notamment y trouver

Lassociation dagreacutegationLes proprieacuteteacutes dassociationLexpression de rocircles dans les associationsLes attributs de classeLes qualificatifsLes opeacuterations (ou meacutethodes)

Le chapitre donne de plus des conseils meacutethodologiques pour la conception (voir en particulier la synthegravese page 163)

On pourra eacutegalement y trouver

Des principes de choix de modeacutelisation entre attributs et classes et sur la segmentation des classesDes principes de seacutelection des attributs (redondance avec les associations avec les classes etc)Des principes de seacutelection des associationsDes principes de choix de cardinaliteacute (notamment pour la gestion dhistorisation)Des principes de seacutelection des relations de geacuteneacuteralisation (heacuteritage)Des principes dintroduction de meacutetaclasses (type)s

U M L e n Franccedilais

Une tregraves bonne reacutefeacuterence en ligne sur la modeacutelisation UML avec des cours des liens vers la norme etc

Le contenu deacutepasse tregraves largement lusage dUML pour la modeacutelisation de BD (et ne fait dailleurs pas de reacutefeacuterence preacutecise agrave ce sous-ensemble particulier)

On pourra consulter en particulier le chapitre sur les diagrammes de classe httpumlfreefrcoursi-p14html

UML en 5 eacutetapes

On consultera en particulier le tutoriel sur les diagrammes de classe httpdeveloppeurjournaldunetcomtutorielcpt010607cpt_umlintroshtml

Cinq petits conseils pour un scheacutema UML efficace

Compleacutement Modeacutelisation UML

Compleacutement Reacutefeacuterence UML en ligne

Compleacutement Tutoriel sur la modeacutelisation UML

Compleacutement Conseils

Synthegravese Les diagrammes de modeacutelisation conceptuelle

29

-

-

- -

-

- -

-

-

- -

-

- - - -

-

-

(chapitre 3)UML2 par la pratique

Des explications exemples et eacutetudes de cas

54 Synthegravese Les diagrammes de modeacutelisation conceptuelle

Un modegravele conceptuel peut ecirctre repreacutesenteacute sous forme de diagramme E-A ou sous forme de diagramme de classe UML

Classe ou Entiteacute

Attribut ou Proprieacuteteacute

TypeacuteMulti-valueacuteComposeacuteDeacuteriveacute

Meacutethode

ParamegravetresValeur de retour

Association

Association

VerbeCardinaliteacute

Heacuteritage

Heacuteritage dattributsHeacuteritage de meacutethodes

Composition (ou entiteacute faible)

Cardinaliteacute

Compleacutement Pratique

Exercices

30

-

-

-

-

-

-

-

1 2

1

1 Exercice Lab III[20 min]

Description du problegraveme

Un laboratoire souhaite geacuterer les meacutedicaments quil conccediloit

Un meacutedicament est deacutecrit par un nom qui permet de lidentifier En effet il nexiste pas deux meacutedicaments avec le mecircme nom Un meacutedicament comporte une description courte en franccedilais ainsi quune description longue en latin On gegravere aussi le conditionnement du meacutedicament cest agrave dire le nombre de pilules par boicircte (qui est un nombre entier)Agrave chaque meacutedicament on associe une liste deacutedieacutee de contre-indications geacuteneacuteralement plusieurs parfois aucune Les contre-indications sont trieacutees par ordre dimportance Lordre est total est strict pour un meacutedicament donc chaque contre-indication possegravede une importance et il nexiste pas deux contre-indications associeacutees au mecircme meacutedicament avec la mecircme importanceTout meacutedicament possegravede au moins un composant souvent plusieurs Un composant est identifieacute par un code unique et possegravede un intituleacute Tout composant peut intervenir dans la fabrication de plusieurs meacutedicaments Il existe des composants qui ne sont pas utiliseacutes pour fabriquer des meacutedicaments et que lon veut quand mecircme geacuterer

Donneacutees de test

Afin de mateacuterialiser notre base de donneacutees nous obtenons les descriptions suivantes

Le a pour description courte et pour description longue Chourix Meacutedicament contre la chute des chouxlaquo raquoVivamus fermentum semper porta Nunc diam velit adipiscing ut tristique vitae sagittis vel odio laquo

Il est conditionneacute en boicircte de 13Maecenas convallis ullamcorper ultricies Curabitur ornare raquoSes contre-indications sont

Le Chourix ne doit jamais ecirctre pris apregraves minuitLe Chourix ne doit jamais ecirctre mis au contact avec de leau

Ses composants sont le et le HG79 SN50Le a pour description courte et pour Tropas Meacutedicament contre les dysfonctionnements intellectuelslaquo raquodescription longue Suspendisse lectus leo consectetur in tempor sit amet placerat quis neque Etiam laquo

Il est conditionneacute en boicircte de 42luctus porttitor lorem sed suscipit est rutrum non raquoSes contre-indications sont

Le Tropas doit ecirctre gardeacute agrave labri de la lumiegravere du soleil

Son unique composant est le HG79Les composants existants sont

HG79 Vif-argent alleacutegeacute

ExercicesII

Exercice Eacutetudiants et UVs (introduction)

31

- - -

- - HG81 Vif-argent alourdi

SN50 Pur eacutetain

Question 1

Question 2

Question 3

2 Exercice Eacutetudiants et UVs (introduction)[20 min]

On dispose du scheacutema UML ci-apregraves qui deacutecrit des eacutetudiants des UV les notes obtenues par les eacutetudiants agrave ces UV et les diplocircmes dorigine de ces eacutetudiants

Eacutetudiants et UVs

key deacutesigne des cleacutes candidates ici toutes les cleacutes ne sont composeacutees que dun seul attributlocal key deacutesigne une cleacute localeun semestre est de la forme PYYYY ou AYYYY (ougrave YYYY deacutesigneacute une anneacutee sur 4 chiffre) exemple A2013 P2014

Rappel Notion de cleacute locale dans classes dassociation (cf p49)

Effectuez le modegravele conceptuel en UML de ce problegraveme

Indices

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans deacutedieacuteeles donneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition

[ ]solution ndeg4 [ ] p56

En mobilisant les regravegles adeacutequates proposer un modegravele logique de donneacutees correspondant en relationnel Le repeacuterage des domaines et des cleacutes est obligatoire

[ ]solution ndeg5 [ ] p57

Dessiner des tableaux remplis avec les donneacutees fournies en exemple afin de montrer que le modegravele fonctionne selon le besoin exprimeacute initialement On pourra mettre le premier mot seulement des descriptions pour gagner du temps

[ ]solution ndeg6 [ ] p57

Exercice Super-heacuteros relationnels I

32

-

-

Question

3 Exercice Super-heacuteros relationnels I[20 min]

La gamme de super-heacuteros GARVEL veut reacutealiser la base de donneacutees de leurs figurines articuleacutees La socieacuteteacute a fait reacutealiser un modegravele UML qui doit servir de point de deacutepart agrave la mise en œuvre

Modegravele UML Figurines GARVEL

Question

4 Exercice Objets Numeacuteriques Libres[30 min]

Lassociation ONL (Objets Numeacuteriques Libres) est une association de promotion des logiciels libres Elle souhaite exposer sur un site Internet une liste de logiciels libres Ce site sera adosseacute agrave une base de donneacutees relationnelle ou relationnel-objet La premiegravere eacutetape de sa deacutemarche est de reacutealiser un modegravele conceptuel repreacutesentant ce quelle souhaite faire

La base de donneacutees permet de geacuterer des applicationsLes applications sont identifieacutees par leur nom (LibreOffice Gimp) et leur version (10 21) et comportent une description courte et une URL Tous les attributs sont obligatoires Chaque application a une URL uniqueLa base de donneacutees permet de geacuterer des librairies

Traduire le scheacutema en modegravele logique relationnel ( )MLD1

On choisira obligatoirement les cleacutes primaires parmi celles neacutecessitant le plus petit nombre de bits possible pour leur codage

[ ]solution ndeg7 [ ] p57

Transformer le modegravele UML en modegravele relationnel (justifier les passages non triviaux en particulier la relation dheacuteritage)

[ ]solution ndeg8 [ ] p58

Exercice Objets Numeacuteriques Libres

33

-

-

-

-

-

-

-

-

-

-

-

-

Les librairies sont des logiciels mais pas des applications Elles ont les mecircmes attributs que les applications (nom version description courte URL) mais les URL ne sont pas neacutecessairement uniques Les applications peuvent deacutependre de librairies ou dautres applications et les librairies peuvent deacutependre dautres librairies (mais pas dune application)La base de donneacutees permet de geacuterer des composantsLes composants sont inteacutegreacutes agrave une application ou librairie Les composants ont un code interne agrave lapplication ou la librairie quil servent une version et une description courte et une URL Le code et le numeacutero de version permettent didentifier localement le composant au sein de la librairie ou de lapplication la description courte et lURL sont optionnellesLa base de donneacutees permet de geacuterer des licencesLes applications librairies et composants sont attacheacutes agrave une ou plusieurs licences identifieacutees par leur nom (GPL MPL) leur version et leur langue et comportant le texte inteacutegral de la licence Les versions des logiciels et licences sont de type numeacutero de licence majeur point numeacutero de licence mineur comme 10 ou 22La base de donneacutees permet de geacuterer des cateacutegoriesChaque logiciel est rangeacute dans une cateacutegorie principale et plusieurs cateacutegories secondaires Exemple de cateacutegories bureautique dessin multimeacutedia physique

Exemple (factice) de donneacutees

Applications

Scenari 41 une chaicircne eacuteditoriale XML httpscenariorg deacutepend de Libreoffice 43 et de ImageMagick 68Libreoffice 43 une suite bureautique WYSIWYG httplibreofficeorg

Librairie

ImageMagick 68 permet de creacuteer de convertir de modifier et dafficher des images http imagemagickorg

Composant

impng 02 est un composant de ImageMagick 68 permet de compresser une image au format PNG

Toutes ces applications librairies et composants sont disponibles sous une licence LGPL 30 et GPL 30 franccedilaisesToutes ces applications et librairies sont rangeacutees dans la cateacutegorie principale document Scenari est rangeacute dans la cateacutegorie secondaire Eacutedition WYSIWYM Libreoffice dans la cateacutegorie secondaire Bureautique ImageMagick dans la cateacutegorie secondaire Multimeacutedia

Question

Reacutealiser un MCD en UML[ ]solution ndeg9 [ ] p58

Devoirs

34

1 Exercice Arbre de scegravene 3D[30 minutes]

On souhaite pouvoir geacuterer les diffeacuterents eacuteleacutements composant des scegravenes 3D dans une base de donneacutees Une scegravene contient des objets qui eux-mecircmes peuvent appartenir agrave plusieurs scegravenes (au moins une) mais il ne peut y avoir plusieurs fois le mecircme objet dans une mecircme scegravene Dans chaque scegravene les objets peuvent ecirctre visibles ou invisibles Les scegravenes et les objets sont identifieacutes de maniegravere unique par un nom Une scegravene peut ecirctre active ou inactive Un objet a comme proprieacuteteacute une position dans lespace repreacutesenteacutee par un vecteur de reacuteels agrave trois composantes (x y z) Les objets sont organiseacutes de maniegravere hieacuterarchique un objet peut ecirctre parent de plusieurs objets et chaque objet peut avoir au plus un parent Des scripts peuvent ecirctre associeacutes agrave un objet ou agrave une scegravene (agrave lun ou agrave lautre mais pas aux deux) Un script est identifieacute de maniegravere unique par un nom et possegravede eacutegalement un attribut permettant de connaicirctre son eacutetat (actif ou inactif) Un personnage est un objet particulier qui possegravede des animations Une animation est relative agrave un personnage et est identifieacutee de maniegravere locale par un nom Agrave un objet est associeacute un maillage et celui-ci peut ecirctre utiliseacute par plusieurs objets Un maillage est identifieacute de maniegravere unique par un nom et est composeacute de plusieurs eacuteleacutements Chaque eacuteleacutement est relatif agrave un maillage et est identifieacute de maniegravere locale par un numeacutero Il existe exactement trois types deacuteleacutement des nœuds des arrecirctes et des faces Une face est deacutelimiteacutee par trois arrecirctes et chaque arrecircte est deacutelimiteacutee par deux nœuds Plusieurs arrecirctes peuvent partager un mecircme nœud et plusieurs faces peuvent partager une mecircme arrecircte Afin deacutevaluer la complexiteacute dune scegravene on souhaite pouvoir calculer le nombre de faces afficheacutees pour une scegravene donneacutee (cest-agrave-dire la somme du nombre de faces du maillage associeacute aux objets visibles de la scegravene) Un maillage possegravede plusieurs mateacuteriaux identifieacutes de maniegravere unique par un nom Un mateacuteriau peut ecirctre associeacute agrave plusieurs maillages Un mateacuteriau est caracteacuteriseacute par une couleur deacutefinie par un vecteur dentiers agrave quatre composantes rouge vert bleu alpha Un mateacuteriau peut posseacuteder une texture et celle-ci peut ecirctre utiliseacutee par plusieurs mateacuteriaux Une texture est identifieacutee de maniegravere unique par un nom et possegravede comme attribut une image

Question 1

Question 2

DevoirsIII

Proposez une clarification de ce problegraveme On pourra reclasser les informations par grande cateacutegorie scegravene objets scripts

Eacutetablissez un modegravele conceptuel en UML de ce problegraveme

Compleacutement Exercices de modeacutelisation suppleacutementaire

35

1 Exercice Appartements agrave louer[30 min]

Une agence dimmobilier (ventes et locations) veut geacuterer son parc dappartements dans une base de donneacutees Chaque appartement possegravede plusieurs piegraveces qui peuvent ecirctre des piegraveces dhabitation des piegraveces de rangement ou des commoditeacutes

Chaque piegravece a une superficie un nombre de prises eacutelectriques et des meubles Pour ces derniers on veut enregistrer le nom du modegravele et le type (chaise lit four etc) Rien nempecircche quune piegravece comporte plusieurs meubles identiques (par exemple plusieurs chaises PIN IQUEA) Les piegraveces dhabitation ont une ou plusieurs fenecirctres les piegraveces de rangement ont une ou plusieurs eacutetagegraveres et une surface de rangement utile totale On veut aussi savoir dans quelles piegraveces de rangement se situent les tableaux eacutelectriques de lappartement Finalement les piegraveces commoditeacutes peuvent ecirctre de trois types cuisine toilette ou salle de bain

Lagence veut aussi enregistrer les portes entre les diffeacuterentes piegraveces Une porte peut ecirctre agrave simple battant double battant coulissante ou une simple ouverture

Chaque appartement a une adresse une superficie totale (qui est la somme des superficies des piegraveces) et un type qui est la lettre T suivie du nombre de piegraveces dhabitation de lappartement Pour un appartement donneacute chaque piegravece est identifieacutee par un numeacutero (commenccedilant au numeacutero 1)

Lagence veut eacutegalement enregistrer le quartier ougrave se trouve lappartement auquel est lieacute un prix par megravetre carreacute Finalement elle veut garder un historique de lhistoire de lappartement les peacuteriodes pour lesquelles il est libre occupeacute en travaux ou vendu

Question

2 Exercice Objectifs[40 min]

Vous prenez la preacutesidence de lassociation Objectifs dont lobjet est daider ses eacutetudiants membres agrave mener des projets dans le cadre de leurs eacutetudes

Compleacutement Exercices de modeacutelisation suppleacutementaire

IV

Reacutealisez le diagramme UML reacutepondant aux besoins de cette agence[ ]solution ndeg10 [ ] p59

Exercice Objectifs

36

- - -

-

-

- - -

Vous constatez en arrivant dans lassociation que personne ne sait exactement quels sont les projets en cours ni qui fait quoi dans les projets Vous ne parvenez pas non plus agrave obtenir une liste exacte des partenaires sur lesquels lassociation peut compter La seule chose sur laquelle vous parvenez agrave mettre la main est un fichier tableur vaguement agrave jour

Vous deacutecidez quil est plus que temps de mettre en place une base de donneacutees afin dassurer la bonne gestion des informations les plus importantes pour lassociation Vous vous attachez pour cela agrave reacutealiser une analyse des besoins

Analysez les documents ci-apregraves

Etat des projets

Eacutetat des projets de lassociation Objectifs

Recueil de besoins

Agrave partir de leacutetude du fonctionnement actuel de lassociation vous relevez les choses importantes agrave geacuterer suivantes

Les membres de lassociation geacuteneacuteralement identifieacutes par leur preacutenomLes projets geacutereacutes par lassociation avec des dates de deacutebut et de fin preacutecises et un chef de projetLe deacutetail des tacircches de chaque projet avec leurs dates de deacutebut et de fin aussi et la liste de tous les membres qui y participentLa liste des partenaires des projets avec leur rocircle preacutecis pour chacun des projets auxquels ils participent

Afin de mieux geacuterer les attributions des projets il serait eacutegalement inteacuteressant de creacuteer une liste des speacutecialiteacutes correspondant agrave ce qui ce fait dans lassociation et daffecter une speacutecialiteacute agrave chaque membre ainsi quune agrave chaque projet pour voir si ce sont bien les membres les mieux adapteacutes qui travaille sur les projets

Recueil de donneacutees

Les discussions avec les anciens membres de lassociation vous apprennent les choses suivantes

Lassociation a termineacute de geacuterer les trois projets Comeacutedie Musicale geacutereacutee par Nathalie sur les trois premiers mois du semestre dautomne 1001 Science en fecircte geacutereacutee par Pierre sur tout le semestre de printemps 1003 et Nuit du picolo geacutereacutee par Julien en novembre 1001Les speacutecialiteacutes recenseacutees pour le moment sont Ville Universiteacute Sport Entreprise Culture InternationalIl faut au moins dix membres agrave lassociation (sinon elle ferme) recruter ceux qui manquentAidez lassociation agrave diviser ses projets en tacircches

Exercice Objectifs

37

- Les partenaires suivants aident ou ont aideacute lassociation la mairie pour la comeacutedie musicale et la science en fecircte qui apporte un soutien financier le ministegravere de la culture qui apporte son soutien logistique agrave la science en fecircte lassociation des commerccedilants de la ville qui apporte son soutien publicitaire agrave la comeacutedie musicale 1664 qui offre ses biegraveres agrave moitieacute prix pour la nuit du Picolo

Question 1

Question 2

Question 3

Afin de preacuteparer une analyse des besoins sommaire listez les donneacutees que vous devrez geacuterer agrave laide des documents et recueils de discussion agrave votre disposition Faites des hypothegraveses lorsque les donneacutees sont incomplegravetes ou incoheacuterentes

[ ]solution ndeg11 [ ] p59

Reacutealiser le MCD en UML et en E-A agrave partir des donneacutees preacutepareacutees dans la question preacuteceacutedente[ ]solution ndeg12 [ ] p60

Reacutealiser le MLD en relationnel en traduisant votre MCD[ ]solution ndeg13 [ ] p61

Contenus annexes

38Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

- - -

gt Attributs

Un attribut est une information eacuteleacutementaire qui caracteacuterise une classe et dont la valeur deacutepend de lobjet instancieacute

Le domaine des valeurs que peut prendre lattribut est fixeacute a prioriUn attribut est typeacute

Il peut prendre plusieurs valeurs distinctes dans son domaineUn attribut peut ecirctre multivalueacute Sa valeur alors est une fonction sur dautres attributs de la classeUn attribut peut ecirctre deacuteriveacute

(ou composite) Il joue alors le rocircle dun groupe dattributs (par Un attribut peut ecirctre composeacuteexemple une adresse peut ecirctre un attribut composeacute des attributs numeacutero type de voie nom de la voie) Cette notion renvoie agrave la notion de variable de type dans les langages de Record

programmation classiques

En UML on preacutefegravere lusage de meacutethodes aux attributs deacuteriveacutes On utilisera toujours des meacutethodes degraves que la valeur de lattribut deacuteriveacute deacutepend dautres attributs exteacuterieurs agrave sa classeEn UML on preacutefegravere lusage de compositions aux attributs composeacutes On utilisera toujours des compositions pour les attributs composeacutes et multivalueacutes

1 attributtype2 attribut_multivalueacute[nbMinValeursnbMaxValeurs]type3 attribut_deacuteriveacutetype4 attribut_composeacute5   - sous-attribut1type6   - sous-attribut2type7   -

Contenus annexes

Deacutefinition Attribut

Attention On utilise peu les attributs deacuteriveacutes et composeacutes en UML

Syntaxe

attributtype

attribut_multivalueacute[nbMinValeursnbMaxValeurs]type

attribut_deacuteriveacutetype

attribut_composeacute

  - sous-attribut1type

  - sous-attribut2type

  -

Contenus annexes

39Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Repreacutesentation dattributs en UML

Dans cet exemple les attributs Nom Preacutenom sont de type lun de 20 caractegraveres et lautre de 10 stringtandis que DateNaissance est de type et Age de type Preacutenom est un attribut multivalueacute ici date integerune personne peut avoir de 1 agrave 3 preacutenoms Age est un attribut deacuteriveacute il est calculeacute par une fonction sur DateNaissance

Meacutethodes (cf p39)

Composition (cf p5)

gt Meacutethodes

Une meacutethode (ou opeacuteration) est une fonction associeacutee agrave une classe dobjet qui permet dagir sur les objets de la classe ou qui permet agrave ces objets de renvoyer des valeurs (calculeacutees en fonction de paramegravetres)

1 methode(paramegravetres)type

Pour la modeacutelisation des bases de donneacutees les meacutethodes sont surtout utiliseacutees pour repreacutesenter des donneacutees calculeacutees (agrave linstar des attributs deacuteriveacutees) ou pour mettre en exergue des fonctions importantes du systegraveme cible Seules les meacutethodes les plus importantes sont repreacutesenteacutees lapproche est moins systeacutematique quen modeacutelisation objet par exemple

Lors de la transformation du modegravele conceptuel UML en modegravele logique relationnel les meacutethodes ne Leur repeacuterage au niveau conceptuel sert donc surtout daide-seront geacuteneacuteralement pas impleacutementeacutees

meacutemoire pour limpleacutementation au niveau applicatif

Exemple La classe Personne

Compleacutement Voir aussi

Deacutefinition Meacutethode

Syntaxe

Remarque Meacutethodes et modeacutelisation de BD

Remarque Meacutethodes relationnel relationnel-objet

methode(paramegravetres)type

Contenus annexes

40Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Au contraire un modegravele logique relationnel-objet permettra limpleacutementation de meacutethodes directement associeacutees agrave des tables Leur repeacuterage au niveau conceptuel est donc encore plus important

Transformation des meacutethodes par des vues (cf p40)

gt Transformation des meacutethodes par des vues

Lorsquune meacutethode est speacutecifieacutee sur un diagramme UML pour une classe C si cette meacutethode est une fonction relationnelle (elle renvoie une unique valeur et elle peut ecirctre reacutesolue par une requecircte SQL) alors on creacutee une vue qui reprend les attributs de la classe C et ajoute des colonnes calculeacutees pour les meacutethodes

Les attributs deacuteriveacutes eacutetant apparenteacutes agrave des meacutethodes ils peuvent eacutegalement ecirctre geacutereacutes par des vues

gt Classe dassociation

On utilise la notation des classes dassociation lorsque lon souhaite ajouter des proprieacuteteacutes agrave une association

Notation dune classe dassociation en UML

On reacuteserve en geacuteneacuteral les classes dassociation aux associations NM

Il est toujours possible de reacuteduire une classe dassociation sur une association 1N en migrant ses attributs sur la classe cocircteacute N et cest en geacuteneacuteral plus lisible ainsi

Compleacutement

Meacutethode

Remarque Attributs deacuteriveacutes

Deacutefinition Classe dassociation

Syntaxe Notation dune classe dassociation en UML

Meacutethode

Contenus annexes

41Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

-

Emplois

Selon le standard UML une classe dassociation est une classe et agrave ce titre elle peut ecirctre mobiliseacutee dans dautres associations ou dans des heacuteritages Nous deacuteconseillons neacuteanmoins ces notations qui ont tendance agrave complexifier la lecture et la transformation du diagramme

Nous conseillons donc de ne jamais associer une classe dassociation

gt Transformation des attributs

Pour chaque attribut eacuteleacutementaire et monovalueacute dune classe

on creacutee un attribut correspondant

Attribut

Classe1(ab)

Pour chaque attribut composite comprenant N sous-attributs dune classe

on creacutee N attributs correspondantsdont les noms sont la concateacutenation du nom de lattribut composite avec celui du sous-attribut

Exemple Exemple de classe dassociation

Conseil

Meacutethode Attributs simples

Meacutethode Attributs composites

Contenus annexes

42Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- - - -

Attribut composeacute

Classe1(ab_b1b_b2)

Pour chaque attribut multivalueacute b dune classe C

on creacutee une nouvelle relation RBqui comprend un attribut monovalueacute correspondant agrave bplus la cleacute de la relation repreacutesentant C la cleacute de RB est la concateacutenation des deux attributs

Attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Dans le cas ougrave le nombre maximum de est fini et petit on peut eacutegalement adopter la transformation b

suivante Classe1(ab1b2b3b4b5b6b7b8b9b10)

Si le nombre dattributs est infini ( ) cest impossible sil est trop grand ce nest pas souhaitableb[1]

On combine les regravegles eacutenonceacutees pour les attributs composeacutes et pour les attributs multivalueacutes

Attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Transformation des compositions (cf p42)

Meacutethode Attributs multivalueacutes

Meacutethode Attributs multivalueacutes (meacutethode alternative)

Meacutethode Attributs composeacutes multivalueacutes

Rappel Voir aussi

Contenus annexes

43Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

gt Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Compleacutement Attributs multivalueacutes et composeacutes

Contenus annexes

44Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

Rappel Voir aussi

Rappel

Meacutethode

Contenus annexes

45Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p48)

gt Transformation des associations 1N

Pour chaque association binaire de type 1N

on ajoute agrave la relation cocircteacute N une cleacute eacutetrangegravere vers la relation cocircteacute 1

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Meacutethode

Contenus annexes

46Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Association 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Contrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p46)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

R1

Compleacutement

Rappel

Meacutethode

Contenus annexes

47Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p47)

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Deacutefinition Projection

Contenus annexes

48Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Deacutefinition Projection

Contenus annexes

49Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Transformation des classes dassociation

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de lassociation NM

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Meacutethode Classe dassociation NM

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Transformation des associations 0111

20

-

-

-

-

Classe2(cda=gtClasse1) avec a KEY

Contrainte PROJECTION(Classe1a) = PROJECTION(Classe2a)

La contrainte dynamique exprimeacutee ici suit le mecircme principe que pour les association 1NContrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p44)

33 Transformation des associations 0111

Le plus souvent cest la meacutethode par les deux relations qui est la plus adapteacutee on choisira toujours la relation cocircteacute 01 pour ecirctre reacutefeacuterenccedilante

Il est possible dutiliser la fusion dans ce cas les cleacutes cocircteacute 01 deviennent des attributs il ne UNIQUE

peuvent plus ecirctre cleacutes pouvant ecirctre NULL

Association 011

Classe1(abc=gtClasse2) avec c KEY

Classe2(cd)

ou

Classe12(cdab) avec a UNIQUE

34 Transformation des associations 0101

On choisit la solution avec deux relations dun cocircteacute ou de lautre la cleacute eacutetrangegravere est associeacute agrave la contrainte ce nest pas une cleacute car elle peut ecirctre nulleUNIQUE

Il nest pas souhaitable de choisir la fusion lune des deux relations pouvant ecirctre nulle on ne pourrait plus trouver de cleacute naturelle

Association 0101

Classe1(abc=gtClasse2) avec c UNIQUE

Classe2(cd)

ou

Compleacutement Contrainte dynamique

Meacutethode Association 0111

Meacutethode Association 0101

Exemple de choix pour une relation 11

21

-

- -

-

-

Classe1(ab)

Classe2(cda=gtClasse1) avec a UNIQUE

35 Exemple de choix pour une relation 11

Soit deux entiteacutes homme et femme et une association mariage de cardinaliteacute 1111 entre ces deux entiteacutes (hommes et femmes sont donc obligatoirement marieacutes)Les entiteacutes homme et femme sont identifieacutees par un attribut nom (dans ce modegravele chaque personne a un nom unique on pourrait remplacer le nom par un identifiant comme le numeacutero de seacutecuriteacute social ou par une cleacute artificielle pour ecirctre plus proche de la reacutealiteacute)

Bien que de type 1111 le choix de la fusion nest pas tregraves opportun car il sagit bien dobjets distincts que lon veut modeacuteliser

On choisira donc plutocirct la repreacutesentation avec deux relationsLa cleacute eacutetrangegravere pourra ecirctre du cocircteacute homme ou femme mecircme si la pratique dominante nous incite agrave la mettre du cocircteacute femmeOn pourra eacutegalement deacutecider de prendre la cleacute eacutetrangegravere comme cleacute primaire

1 homme (nom)2 femme (mariage=gthomme nom) avec nom KEY3 Contrainte PROJ(hommenom) = PROJ(femmemariage)

Si lassociation avait eacuteteacute de cardinaliteacute 0101 (certains hommes et femmes ne sont pas marieacutes) un choix similaire se serait imposeacute avec limpossibiliteacute de choisir la cleacute eacutetrangegravere comme cleacute primaire celle-ci pouvant ecirctre nulle et neacutetant donc plus candidate

1 homme (nom)2 femme (nom mariage=gthomme) avec mariage UNIQUE

4 Autres eacuteleacutements utiles en UML packages et steacutereacuteotypesObjectifs

Maicirctriser le diagramme de classe UML dans le cas de la conception de BD

41 Paquetages

Les paquetages (plus communeacutement appeleacutes ) sont des eacuteleacutements servant agrave organiser un modegravelepackage

Ils sont particuliegraverement utiles degraves que le modegravele comporte de nombreuses classes et que celles-ci peuvent ecirctre trieacutees selon plusieurs aspects structurants

Exemple

Exemple

Deacutefinition Package

homme (nom)

femme (mariage=gthomme nom) avec nom KEY

Contrainte PROJ(hommenom) = PROJ(femmemariage)

homme (nom)

femme (nom mariage=gthomme) avec mariage UNIQUE

Steacutereacuteotype

22

Notation des paquetages en UML

Exemple dutilisation des packages

On repreacutesente chaque classe au sein dun Il est alors possible de faire une preacutesentation globale du packagemodegravele (tous les ) partielle (une partie des ) ou centreacutee sur un seul packages packages package

Pour une repreacutesentation partielle ou centreacutee sur un on repreacutesente les concerneacutes avec leurs package packagesclasses propres ainsi que toutes les classes lieacutees des autres packages (et seulement celles-ci)

Preacutesentation partielle du modegravele centreacutee sur un package

Syntaxe

Exemple

Meacutethode

Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt

23

42 Steacutereacuteotype

Un steacutereacuteotype UML est une syntaxe permettant dajouter de la seacutemantique agrave la modeacutelisation des classes Il permet de deacutefinir des afin de regrouper conceptuellement un ensemble de classes (agrave linstar types de classedune classe qui permet de regrouper conceptuellement un ensemble dobjets)

Cest une meacutecanique de meacuteta-modeacutelisation elle permet deacutetendre le meacuteta-modegravele UML cest agrave dire le modegravele conceptuel du modegravele conceptuel

Un meacuteta-modegravele est le modegravele dun modegravele Par exemple le meacuteta-modegravele UML comprend les concepts de classe attribut association cardinaliteacute composition agreacutegation contraintes annotations On mobilise ces concepts (on les instancie) pour exprimer un modegravele particulier suivant le formalisme UML

Les steacutereacuteotypes permettent donc dajouter au meacuteta-modegravele UML standard celui que tout le monde utilise des concepts locaux pour enrichir le langage de modeacutelisation que lon utilise pour reacutealiser des modegraveles

Notation dun steacutereacuteotype en UML

Un steacutereacuteotype speacutecifique enrichit le meacuteta-modegravele UML mais selon une seacutemantique qui est propre agrave celui qui la poseacute non standard donc La conseacutequence est que pour un tiers linterpreacutetation du steacutereacuteotype nest plus normaliseacutee et sera potentiellement plus facilement erroneacutee Il convient donc de ne pas abuser de cette meacutecanique

Deux ou trois steacutereacuteotypes speacutecifiques correctement deacutefinis sont faciles agrave transmettre plusieurs dizaines repreacutesenteraient un nouveau langage complet agrave apprendre pour le lecteur du modegravele

Il existe des steacutereacuteotypes fournit en standard par UML ou communeacutement utiliseacutes par les modeacutelisateurs Lavantage est quil seront compris plus largement au mecircme titre que le reste du meacuteta-modegravele (ils ont une valeur de standard)

43 Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt

Deacutefinition Steacutereacuteotype UML

Deacutefinition Meacuteta-modegravele

Syntaxe

Conseil Steacutereacuteotypes speacutecifiques et steacutereacuteotypes standard

Syntaxe

Type utilisateurs steacutereacuteotype ltltdataTypegtgt

24

Steacutereacuteotype UML permettant dexprimer une eacutenumeacuteration

Exemple de modeacutelisation UML deacutenumeacuteration

44 Type utilisateurs steacutereacuteotype ltltdataTypegtgt

Les types utilisateurs permettent de deacutefinir des types complexes propres en extension des types primaires (entier chaicircne date)

Steacutereacuteotype dataType

Steacutereacuteotype dataType (exemple)

Cette modeacutelisation est eacutequivalente agrave la modeacutelisation des attributs composeacutes directement dans la classe principale Cest une repreacutesentation plus standard en UML

Exemple

Syntaxe

Exemple

Meacutethode Attributs composeacutes

Synthegravese sur la modalisation UML et relationnelle

25

Quelques eacuteleacutements de stylistique UML

26

-

- -

-

-

-

- - -

- - - -

1

2

3

5 Synthegravese sur la modalisation UML et relationnelle51 Quelques eacuteleacutements de stylistique UML

Toutes les associations doivent ecirctre nommeacutees (sauf composition heacuteritage agreacutegation)Ne pas utiliser de nom geacuteneacuterique pour les Classes comme Entiteacute Classe Objet TrucEacuteviter les noms geacuteneacuteriques pour les associations (comme est associeacute agrave)Attention au sens des compositions et agreacutegation le losange est cocircteacute ensemble et noubliez pas les cardinaliteacutes notamment cocircteacute parties

Nutilisez pas le souligneacute ni les en UML pour identifier les cleacutes preacutefeacuterez la contrainte keyPreacutefeacuterez lheacuteritage aux booleacuteens de typage en UMLLes attributs deacuteriveacutes sont reacuteserveacutes aux deacuterivations simples (des attributs de la mecircme classe) si cest plus complexe preacutefeacuterez des meacutethodes (et dans le doute preacutecisez les modes de calcul sur le scheacutema ou dans une note agrave part)Donnez des exemples de contenu lorsque ce nest pas eacutevident (lorsque le couple nom dattribut et type ne permet pas de faccedilon eacutevidente de comprendre de quoi lon parle)Inutile de deacuteclarer le type booleacuteen en UML utilisez-le directement comme un type de donneacutees connu

Si tous vos heacuteritages sont exclusifs notez-le agrave part pour alleacuteger votre scheacutema (et eacuteviter labondance de XOR)

52 Attention aux cleacutes artificielles

en UML on ne pose jamais de cleacutes artificiellesen relationnel on pose rarement des cleacute artificielles sauf dans le cas de cleacutes eacutetrangegraveres vraiment trop compliqueacuteesen SQL on peut poser des cleacutes artificielles si on a une bonne raison (ce nest donc pas systeacutematique et cest agrave justifier)

On najoutera pas de cleacute artificielle en UML au moment de la modeacutelisation conceptuelle des donneacutees

Formellement en UML la notion de cleacute nexiste pas (contrairement agrave l ) elle est ajouteacutee par les E-A

pratiquants des BD

Logiquement on a pas besoin de cette notion en UML les cleacutes artificielles servent en relationnel et dans certains cas uniquementPratiquement cela peut conduire agrave des situations absurdes (comme enlever au niveau logique des cleacutes artificielles ajouteacutees au niveau conceptuel)

Attention

Conseil

Compleacutement

Fondamental

Cleacutes artificielles et niveau conceptuel

Bibliographie commenteacutee sur la modeacutelisation UML

27

-

-

- -

-

- -

-

-

3

4

5

si on fait du non-relationnel on ne doit pas ajouter de cleacutes artificielles dans certains cas (limbrication typiquement) cela arrive mecircme en relationnel avec la transformation de lheacuteritage (dans certains cas toujours)

Meacutethodologiquement il faut se concentrer agrave chaque phase sur ce qui est important donc au moment du MCD on traduit les besoins on repegravere les contraintes explicites (cleacute uniciteacute non nulliteacute) sans se preacuteoccuper de ce qui sera rendu neacutecessaire par la suite par la modeacutelisation relationnelle (les cleacutes eacutetrangegraveres par exemple) ou limpleacutementation (loptimisation par exemple) Agrave chaque jour suffit sa peine Peacutedagogiquement enfin les deacutebutants ont tendance (agrave cause des environnements de conception graphique comme phpMyAdmin notamment) agrave systeacutematiser les cleacutes artificielles en SQL (on pourrait en discuter) mais eacutegalement agrave ne pas faire le travail de recherche des cleacutes naturelles (au niveau relationnel notamment ce qui est une faute de modeacutelisation) Donc au plus tard on fait intervenir les cleacutes artificielles au plus on a une chance de penser aux cleacutes naturelles

Soit le modegravele relationnel suivant

1 Etu (id numEtu) avec numEtu cleacute 2 UV (id codeUv) avec codeUv cleacute3 Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

La question qui permet dafficher la liste des eacutetudiants (numEtu) avec leurs UVs (codeUv) neacutecessite une jointure des cleacutes artificielles Un modegravele sans ces cleacutes artificielles aurait eacuteteacute plus performant pour agrave causereacutepondre agrave cette question puisque toutes les informations se trouvent dans la relation Inscriptions

1 Etu (numEtu) 2 UV (codeUv) 3 Inscriptions (uv=gtUV etu=gtEtu)

Ne soyez pas systeacutematiqueIl est en effet freacutequent dans un projet reacuteel dadopter des cleacutes artificielles presque systeacutematiquement vous pourrez le faire en connaissance de cause quand vous aurez bien compris pourquoi cest inteacuteressant et quand ccedila ne lest pasLes cleacutes artificielles sont inteacuteressantes pour autre chose que les performances (leacutevolutiviteacute par exemple choisissez-les quand vous savez pourquoi)Les cleacutes artificielles ne dispensent pas de rechercher les cleacutes naturelles Les cleacutes artificielles ne sont pas la seule faccedilon doptimiser une base de donneacutees (indexation deacutenormalisation)

53 Bibliographie commenteacutee sur la modeacutelisation UML

Il existe de nombreux outils de modeacutelisation UML On pourra citer

logiciel Open Source et multi-plateformes facile dusage (qui marche neacuteanmoins mieux sur Linux Dia

que sur Windows)

(version gratuite)Objecteering

Cleacutes artificielles et optimisation est-il toujours plus performant dutiliser des cleacutes artificielles

Conseil

Compleacutement Outils de modeacutelisation UML

Etu (id numEtu) avec numEtu cleacute

UV (id codeUv) avec codeUv cleacute

Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

Etu (numEtu)

UV (codeUv)

Inscriptions (uv=gtUV etu=gtEtu)

Bibliographie commenteacutee sur la modeacutelisation UML

28

- - - - - -

- - - - - -

Agrave voir eacutegalement en Open Source ou (non testeacute par lauteur)ArgoUML EclipseUML

UML2 en action

Pour un aperccedilu plus deacutetailleacute des possibiliteacutes dexpression du diagramme de classe UML lire le chapitre 7 Deacuteveloppement du modegravele statique (pages 133 agrave 163)

On pourra notamment y trouver

Lassociation dagreacutegationLes proprieacuteteacutes dassociationLexpression de rocircles dans les associationsLes attributs de classeLes qualificatifsLes opeacuterations (ou meacutethodes)

Le chapitre donne de plus des conseils meacutethodologiques pour la conception (voir en particulier la synthegravese page 163)

On pourra eacutegalement y trouver

Des principes de choix de modeacutelisation entre attributs et classes et sur la segmentation des classesDes principes de seacutelection des attributs (redondance avec les associations avec les classes etc)Des principes de seacutelection des associationsDes principes de choix de cardinaliteacute (notamment pour la gestion dhistorisation)Des principes de seacutelection des relations de geacuteneacuteralisation (heacuteritage)Des principes dintroduction de meacutetaclasses (type)s

U M L e n Franccedilais

Une tregraves bonne reacutefeacuterence en ligne sur la modeacutelisation UML avec des cours des liens vers la norme etc

Le contenu deacutepasse tregraves largement lusage dUML pour la modeacutelisation de BD (et ne fait dailleurs pas de reacutefeacuterence preacutecise agrave ce sous-ensemble particulier)

On pourra consulter en particulier le chapitre sur les diagrammes de classe httpumlfreefrcoursi-p14html

UML en 5 eacutetapes

On consultera en particulier le tutoriel sur les diagrammes de classe httpdeveloppeurjournaldunetcomtutorielcpt010607cpt_umlintroshtml

Cinq petits conseils pour un scheacutema UML efficace

Compleacutement Modeacutelisation UML

Compleacutement Reacutefeacuterence UML en ligne

Compleacutement Tutoriel sur la modeacutelisation UML

Compleacutement Conseils

Synthegravese Les diagrammes de modeacutelisation conceptuelle

29

-

-

- -

-

- -

-

-

- -

-

- - - -

-

-

(chapitre 3)UML2 par la pratique

Des explications exemples et eacutetudes de cas

54 Synthegravese Les diagrammes de modeacutelisation conceptuelle

Un modegravele conceptuel peut ecirctre repreacutesenteacute sous forme de diagramme E-A ou sous forme de diagramme de classe UML

Classe ou Entiteacute

Attribut ou Proprieacuteteacute

TypeacuteMulti-valueacuteComposeacuteDeacuteriveacute

Meacutethode

ParamegravetresValeur de retour

Association

Association

VerbeCardinaliteacute

Heacuteritage

Heacuteritage dattributsHeacuteritage de meacutethodes

Composition (ou entiteacute faible)

Cardinaliteacute

Compleacutement Pratique

Exercices

30

-

-

-

-

-

-

-

1 2

1

1 Exercice Lab III[20 min]

Description du problegraveme

Un laboratoire souhaite geacuterer les meacutedicaments quil conccediloit

Un meacutedicament est deacutecrit par un nom qui permet de lidentifier En effet il nexiste pas deux meacutedicaments avec le mecircme nom Un meacutedicament comporte une description courte en franccedilais ainsi quune description longue en latin On gegravere aussi le conditionnement du meacutedicament cest agrave dire le nombre de pilules par boicircte (qui est un nombre entier)Agrave chaque meacutedicament on associe une liste deacutedieacutee de contre-indications geacuteneacuteralement plusieurs parfois aucune Les contre-indications sont trieacutees par ordre dimportance Lordre est total est strict pour un meacutedicament donc chaque contre-indication possegravede une importance et il nexiste pas deux contre-indications associeacutees au mecircme meacutedicament avec la mecircme importanceTout meacutedicament possegravede au moins un composant souvent plusieurs Un composant est identifieacute par un code unique et possegravede un intituleacute Tout composant peut intervenir dans la fabrication de plusieurs meacutedicaments Il existe des composants qui ne sont pas utiliseacutes pour fabriquer des meacutedicaments et que lon veut quand mecircme geacuterer

Donneacutees de test

Afin de mateacuterialiser notre base de donneacutees nous obtenons les descriptions suivantes

Le a pour description courte et pour description longue Chourix Meacutedicament contre la chute des chouxlaquo raquoVivamus fermentum semper porta Nunc diam velit adipiscing ut tristique vitae sagittis vel odio laquo

Il est conditionneacute en boicircte de 13Maecenas convallis ullamcorper ultricies Curabitur ornare raquoSes contre-indications sont

Le Chourix ne doit jamais ecirctre pris apregraves minuitLe Chourix ne doit jamais ecirctre mis au contact avec de leau

Ses composants sont le et le HG79 SN50Le a pour description courte et pour Tropas Meacutedicament contre les dysfonctionnements intellectuelslaquo raquodescription longue Suspendisse lectus leo consectetur in tempor sit amet placerat quis neque Etiam laquo

Il est conditionneacute en boicircte de 42luctus porttitor lorem sed suscipit est rutrum non raquoSes contre-indications sont

Le Tropas doit ecirctre gardeacute agrave labri de la lumiegravere du soleil

Son unique composant est le HG79Les composants existants sont

HG79 Vif-argent alleacutegeacute

ExercicesII

Exercice Eacutetudiants et UVs (introduction)

31

- - -

- - HG81 Vif-argent alourdi

SN50 Pur eacutetain

Question 1

Question 2

Question 3

2 Exercice Eacutetudiants et UVs (introduction)[20 min]

On dispose du scheacutema UML ci-apregraves qui deacutecrit des eacutetudiants des UV les notes obtenues par les eacutetudiants agrave ces UV et les diplocircmes dorigine de ces eacutetudiants

Eacutetudiants et UVs

key deacutesigne des cleacutes candidates ici toutes les cleacutes ne sont composeacutees que dun seul attributlocal key deacutesigne une cleacute localeun semestre est de la forme PYYYY ou AYYYY (ougrave YYYY deacutesigneacute une anneacutee sur 4 chiffre) exemple A2013 P2014

Rappel Notion de cleacute locale dans classes dassociation (cf p49)

Effectuez le modegravele conceptuel en UML de ce problegraveme

Indices

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans deacutedieacuteeles donneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition

[ ]solution ndeg4 [ ] p56

En mobilisant les regravegles adeacutequates proposer un modegravele logique de donneacutees correspondant en relationnel Le repeacuterage des domaines et des cleacutes est obligatoire

[ ]solution ndeg5 [ ] p57

Dessiner des tableaux remplis avec les donneacutees fournies en exemple afin de montrer que le modegravele fonctionne selon le besoin exprimeacute initialement On pourra mettre le premier mot seulement des descriptions pour gagner du temps

[ ]solution ndeg6 [ ] p57

Exercice Super-heacuteros relationnels I

32

-

-

Question

3 Exercice Super-heacuteros relationnels I[20 min]

La gamme de super-heacuteros GARVEL veut reacutealiser la base de donneacutees de leurs figurines articuleacutees La socieacuteteacute a fait reacutealiser un modegravele UML qui doit servir de point de deacutepart agrave la mise en œuvre

Modegravele UML Figurines GARVEL

Question

4 Exercice Objets Numeacuteriques Libres[30 min]

Lassociation ONL (Objets Numeacuteriques Libres) est une association de promotion des logiciels libres Elle souhaite exposer sur un site Internet une liste de logiciels libres Ce site sera adosseacute agrave une base de donneacutees relationnelle ou relationnel-objet La premiegravere eacutetape de sa deacutemarche est de reacutealiser un modegravele conceptuel repreacutesentant ce quelle souhaite faire

La base de donneacutees permet de geacuterer des applicationsLes applications sont identifieacutees par leur nom (LibreOffice Gimp) et leur version (10 21) et comportent une description courte et une URL Tous les attributs sont obligatoires Chaque application a une URL uniqueLa base de donneacutees permet de geacuterer des librairies

Traduire le scheacutema en modegravele logique relationnel ( )MLD1

On choisira obligatoirement les cleacutes primaires parmi celles neacutecessitant le plus petit nombre de bits possible pour leur codage

[ ]solution ndeg7 [ ] p57

Transformer le modegravele UML en modegravele relationnel (justifier les passages non triviaux en particulier la relation dheacuteritage)

[ ]solution ndeg8 [ ] p58

Exercice Objets Numeacuteriques Libres

33

-

-

-

-

-

-

-

-

-

-

-

-

Les librairies sont des logiciels mais pas des applications Elles ont les mecircmes attributs que les applications (nom version description courte URL) mais les URL ne sont pas neacutecessairement uniques Les applications peuvent deacutependre de librairies ou dautres applications et les librairies peuvent deacutependre dautres librairies (mais pas dune application)La base de donneacutees permet de geacuterer des composantsLes composants sont inteacutegreacutes agrave une application ou librairie Les composants ont un code interne agrave lapplication ou la librairie quil servent une version et une description courte et une URL Le code et le numeacutero de version permettent didentifier localement le composant au sein de la librairie ou de lapplication la description courte et lURL sont optionnellesLa base de donneacutees permet de geacuterer des licencesLes applications librairies et composants sont attacheacutes agrave une ou plusieurs licences identifieacutees par leur nom (GPL MPL) leur version et leur langue et comportant le texte inteacutegral de la licence Les versions des logiciels et licences sont de type numeacutero de licence majeur point numeacutero de licence mineur comme 10 ou 22La base de donneacutees permet de geacuterer des cateacutegoriesChaque logiciel est rangeacute dans une cateacutegorie principale et plusieurs cateacutegories secondaires Exemple de cateacutegories bureautique dessin multimeacutedia physique

Exemple (factice) de donneacutees

Applications

Scenari 41 une chaicircne eacuteditoriale XML httpscenariorg deacutepend de Libreoffice 43 et de ImageMagick 68Libreoffice 43 une suite bureautique WYSIWYG httplibreofficeorg

Librairie

ImageMagick 68 permet de creacuteer de convertir de modifier et dafficher des images http imagemagickorg

Composant

impng 02 est un composant de ImageMagick 68 permet de compresser une image au format PNG

Toutes ces applications librairies et composants sont disponibles sous une licence LGPL 30 et GPL 30 franccedilaisesToutes ces applications et librairies sont rangeacutees dans la cateacutegorie principale document Scenari est rangeacute dans la cateacutegorie secondaire Eacutedition WYSIWYM Libreoffice dans la cateacutegorie secondaire Bureautique ImageMagick dans la cateacutegorie secondaire Multimeacutedia

Question

Reacutealiser un MCD en UML[ ]solution ndeg9 [ ] p58

Devoirs

34

1 Exercice Arbre de scegravene 3D[30 minutes]

On souhaite pouvoir geacuterer les diffeacuterents eacuteleacutements composant des scegravenes 3D dans une base de donneacutees Une scegravene contient des objets qui eux-mecircmes peuvent appartenir agrave plusieurs scegravenes (au moins une) mais il ne peut y avoir plusieurs fois le mecircme objet dans une mecircme scegravene Dans chaque scegravene les objets peuvent ecirctre visibles ou invisibles Les scegravenes et les objets sont identifieacutes de maniegravere unique par un nom Une scegravene peut ecirctre active ou inactive Un objet a comme proprieacuteteacute une position dans lespace repreacutesenteacutee par un vecteur de reacuteels agrave trois composantes (x y z) Les objets sont organiseacutes de maniegravere hieacuterarchique un objet peut ecirctre parent de plusieurs objets et chaque objet peut avoir au plus un parent Des scripts peuvent ecirctre associeacutes agrave un objet ou agrave une scegravene (agrave lun ou agrave lautre mais pas aux deux) Un script est identifieacute de maniegravere unique par un nom et possegravede eacutegalement un attribut permettant de connaicirctre son eacutetat (actif ou inactif) Un personnage est un objet particulier qui possegravede des animations Une animation est relative agrave un personnage et est identifieacutee de maniegravere locale par un nom Agrave un objet est associeacute un maillage et celui-ci peut ecirctre utiliseacute par plusieurs objets Un maillage est identifieacute de maniegravere unique par un nom et est composeacute de plusieurs eacuteleacutements Chaque eacuteleacutement est relatif agrave un maillage et est identifieacute de maniegravere locale par un numeacutero Il existe exactement trois types deacuteleacutement des nœuds des arrecirctes et des faces Une face est deacutelimiteacutee par trois arrecirctes et chaque arrecircte est deacutelimiteacutee par deux nœuds Plusieurs arrecirctes peuvent partager un mecircme nœud et plusieurs faces peuvent partager une mecircme arrecircte Afin deacutevaluer la complexiteacute dune scegravene on souhaite pouvoir calculer le nombre de faces afficheacutees pour une scegravene donneacutee (cest-agrave-dire la somme du nombre de faces du maillage associeacute aux objets visibles de la scegravene) Un maillage possegravede plusieurs mateacuteriaux identifieacutes de maniegravere unique par un nom Un mateacuteriau peut ecirctre associeacute agrave plusieurs maillages Un mateacuteriau est caracteacuteriseacute par une couleur deacutefinie par un vecteur dentiers agrave quatre composantes rouge vert bleu alpha Un mateacuteriau peut posseacuteder une texture et celle-ci peut ecirctre utiliseacutee par plusieurs mateacuteriaux Une texture est identifieacutee de maniegravere unique par un nom et possegravede comme attribut une image

Question 1

Question 2

DevoirsIII

Proposez une clarification de ce problegraveme On pourra reclasser les informations par grande cateacutegorie scegravene objets scripts

Eacutetablissez un modegravele conceptuel en UML de ce problegraveme

Compleacutement Exercices de modeacutelisation suppleacutementaire

35

1 Exercice Appartements agrave louer[30 min]

Une agence dimmobilier (ventes et locations) veut geacuterer son parc dappartements dans une base de donneacutees Chaque appartement possegravede plusieurs piegraveces qui peuvent ecirctre des piegraveces dhabitation des piegraveces de rangement ou des commoditeacutes

Chaque piegravece a une superficie un nombre de prises eacutelectriques et des meubles Pour ces derniers on veut enregistrer le nom du modegravele et le type (chaise lit four etc) Rien nempecircche quune piegravece comporte plusieurs meubles identiques (par exemple plusieurs chaises PIN IQUEA) Les piegraveces dhabitation ont une ou plusieurs fenecirctres les piegraveces de rangement ont une ou plusieurs eacutetagegraveres et une surface de rangement utile totale On veut aussi savoir dans quelles piegraveces de rangement se situent les tableaux eacutelectriques de lappartement Finalement les piegraveces commoditeacutes peuvent ecirctre de trois types cuisine toilette ou salle de bain

Lagence veut aussi enregistrer les portes entre les diffeacuterentes piegraveces Une porte peut ecirctre agrave simple battant double battant coulissante ou une simple ouverture

Chaque appartement a une adresse une superficie totale (qui est la somme des superficies des piegraveces) et un type qui est la lettre T suivie du nombre de piegraveces dhabitation de lappartement Pour un appartement donneacute chaque piegravece est identifieacutee par un numeacutero (commenccedilant au numeacutero 1)

Lagence veut eacutegalement enregistrer le quartier ougrave se trouve lappartement auquel est lieacute un prix par megravetre carreacute Finalement elle veut garder un historique de lhistoire de lappartement les peacuteriodes pour lesquelles il est libre occupeacute en travaux ou vendu

Question

2 Exercice Objectifs[40 min]

Vous prenez la preacutesidence de lassociation Objectifs dont lobjet est daider ses eacutetudiants membres agrave mener des projets dans le cadre de leurs eacutetudes

Compleacutement Exercices de modeacutelisation suppleacutementaire

IV

Reacutealisez le diagramme UML reacutepondant aux besoins de cette agence[ ]solution ndeg10 [ ] p59

Exercice Objectifs

36

- - -

-

-

- - -

Vous constatez en arrivant dans lassociation que personne ne sait exactement quels sont les projets en cours ni qui fait quoi dans les projets Vous ne parvenez pas non plus agrave obtenir une liste exacte des partenaires sur lesquels lassociation peut compter La seule chose sur laquelle vous parvenez agrave mettre la main est un fichier tableur vaguement agrave jour

Vous deacutecidez quil est plus que temps de mettre en place une base de donneacutees afin dassurer la bonne gestion des informations les plus importantes pour lassociation Vous vous attachez pour cela agrave reacutealiser une analyse des besoins

Analysez les documents ci-apregraves

Etat des projets

Eacutetat des projets de lassociation Objectifs

Recueil de besoins

Agrave partir de leacutetude du fonctionnement actuel de lassociation vous relevez les choses importantes agrave geacuterer suivantes

Les membres de lassociation geacuteneacuteralement identifieacutes par leur preacutenomLes projets geacutereacutes par lassociation avec des dates de deacutebut et de fin preacutecises et un chef de projetLe deacutetail des tacircches de chaque projet avec leurs dates de deacutebut et de fin aussi et la liste de tous les membres qui y participentLa liste des partenaires des projets avec leur rocircle preacutecis pour chacun des projets auxquels ils participent

Afin de mieux geacuterer les attributions des projets il serait eacutegalement inteacuteressant de creacuteer une liste des speacutecialiteacutes correspondant agrave ce qui ce fait dans lassociation et daffecter une speacutecialiteacute agrave chaque membre ainsi quune agrave chaque projet pour voir si ce sont bien les membres les mieux adapteacutes qui travaille sur les projets

Recueil de donneacutees

Les discussions avec les anciens membres de lassociation vous apprennent les choses suivantes

Lassociation a termineacute de geacuterer les trois projets Comeacutedie Musicale geacutereacutee par Nathalie sur les trois premiers mois du semestre dautomne 1001 Science en fecircte geacutereacutee par Pierre sur tout le semestre de printemps 1003 et Nuit du picolo geacutereacutee par Julien en novembre 1001Les speacutecialiteacutes recenseacutees pour le moment sont Ville Universiteacute Sport Entreprise Culture InternationalIl faut au moins dix membres agrave lassociation (sinon elle ferme) recruter ceux qui manquentAidez lassociation agrave diviser ses projets en tacircches

Exercice Objectifs

37

- Les partenaires suivants aident ou ont aideacute lassociation la mairie pour la comeacutedie musicale et la science en fecircte qui apporte un soutien financier le ministegravere de la culture qui apporte son soutien logistique agrave la science en fecircte lassociation des commerccedilants de la ville qui apporte son soutien publicitaire agrave la comeacutedie musicale 1664 qui offre ses biegraveres agrave moitieacute prix pour la nuit du Picolo

Question 1

Question 2

Question 3

Afin de preacuteparer une analyse des besoins sommaire listez les donneacutees que vous devrez geacuterer agrave laide des documents et recueils de discussion agrave votre disposition Faites des hypothegraveses lorsque les donneacutees sont incomplegravetes ou incoheacuterentes

[ ]solution ndeg11 [ ] p59

Reacutealiser le MCD en UML et en E-A agrave partir des donneacutees preacutepareacutees dans la question preacuteceacutedente[ ]solution ndeg12 [ ] p60

Reacutealiser le MLD en relationnel en traduisant votre MCD[ ]solution ndeg13 [ ] p61

Contenus annexes

38Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

- - -

gt Attributs

Un attribut est une information eacuteleacutementaire qui caracteacuterise une classe et dont la valeur deacutepend de lobjet instancieacute

Le domaine des valeurs que peut prendre lattribut est fixeacute a prioriUn attribut est typeacute

Il peut prendre plusieurs valeurs distinctes dans son domaineUn attribut peut ecirctre multivalueacute Sa valeur alors est une fonction sur dautres attributs de la classeUn attribut peut ecirctre deacuteriveacute

(ou composite) Il joue alors le rocircle dun groupe dattributs (par Un attribut peut ecirctre composeacuteexemple une adresse peut ecirctre un attribut composeacute des attributs numeacutero type de voie nom de la voie) Cette notion renvoie agrave la notion de variable de type dans les langages de Record

programmation classiques

En UML on preacutefegravere lusage de meacutethodes aux attributs deacuteriveacutes On utilisera toujours des meacutethodes degraves que la valeur de lattribut deacuteriveacute deacutepend dautres attributs exteacuterieurs agrave sa classeEn UML on preacutefegravere lusage de compositions aux attributs composeacutes On utilisera toujours des compositions pour les attributs composeacutes et multivalueacutes

1 attributtype2 attribut_multivalueacute[nbMinValeursnbMaxValeurs]type3 attribut_deacuteriveacutetype4 attribut_composeacute5   - sous-attribut1type6   - sous-attribut2type7   -

Contenus annexes

Deacutefinition Attribut

Attention On utilise peu les attributs deacuteriveacutes et composeacutes en UML

Syntaxe

attributtype

attribut_multivalueacute[nbMinValeursnbMaxValeurs]type

attribut_deacuteriveacutetype

attribut_composeacute

  - sous-attribut1type

  - sous-attribut2type

  -

Contenus annexes

39Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Repreacutesentation dattributs en UML

Dans cet exemple les attributs Nom Preacutenom sont de type lun de 20 caractegraveres et lautre de 10 stringtandis que DateNaissance est de type et Age de type Preacutenom est un attribut multivalueacute ici date integerune personne peut avoir de 1 agrave 3 preacutenoms Age est un attribut deacuteriveacute il est calculeacute par une fonction sur DateNaissance

Meacutethodes (cf p39)

Composition (cf p5)

gt Meacutethodes

Une meacutethode (ou opeacuteration) est une fonction associeacutee agrave une classe dobjet qui permet dagir sur les objets de la classe ou qui permet agrave ces objets de renvoyer des valeurs (calculeacutees en fonction de paramegravetres)

1 methode(paramegravetres)type

Pour la modeacutelisation des bases de donneacutees les meacutethodes sont surtout utiliseacutees pour repreacutesenter des donneacutees calculeacutees (agrave linstar des attributs deacuteriveacutees) ou pour mettre en exergue des fonctions importantes du systegraveme cible Seules les meacutethodes les plus importantes sont repreacutesenteacutees lapproche est moins systeacutematique quen modeacutelisation objet par exemple

Lors de la transformation du modegravele conceptuel UML en modegravele logique relationnel les meacutethodes ne Leur repeacuterage au niveau conceptuel sert donc surtout daide-seront geacuteneacuteralement pas impleacutementeacutees

meacutemoire pour limpleacutementation au niveau applicatif

Exemple La classe Personne

Compleacutement Voir aussi

Deacutefinition Meacutethode

Syntaxe

Remarque Meacutethodes et modeacutelisation de BD

Remarque Meacutethodes relationnel relationnel-objet

methode(paramegravetres)type

Contenus annexes

40Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Au contraire un modegravele logique relationnel-objet permettra limpleacutementation de meacutethodes directement associeacutees agrave des tables Leur repeacuterage au niveau conceptuel est donc encore plus important

Transformation des meacutethodes par des vues (cf p40)

gt Transformation des meacutethodes par des vues

Lorsquune meacutethode est speacutecifieacutee sur un diagramme UML pour une classe C si cette meacutethode est une fonction relationnelle (elle renvoie une unique valeur et elle peut ecirctre reacutesolue par une requecircte SQL) alors on creacutee une vue qui reprend les attributs de la classe C et ajoute des colonnes calculeacutees pour les meacutethodes

Les attributs deacuteriveacutes eacutetant apparenteacutes agrave des meacutethodes ils peuvent eacutegalement ecirctre geacutereacutes par des vues

gt Classe dassociation

On utilise la notation des classes dassociation lorsque lon souhaite ajouter des proprieacuteteacutes agrave une association

Notation dune classe dassociation en UML

On reacuteserve en geacuteneacuteral les classes dassociation aux associations NM

Il est toujours possible de reacuteduire une classe dassociation sur une association 1N en migrant ses attributs sur la classe cocircteacute N et cest en geacuteneacuteral plus lisible ainsi

Compleacutement

Meacutethode

Remarque Attributs deacuteriveacutes

Deacutefinition Classe dassociation

Syntaxe Notation dune classe dassociation en UML

Meacutethode

Contenus annexes

41Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

-

Emplois

Selon le standard UML une classe dassociation est une classe et agrave ce titre elle peut ecirctre mobiliseacutee dans dautres associations ou dans des heacuteritages Nous deacuteconseillons neacuteanmoins ces notations qui ont tendance agrave complexifier la lecture et la transformation du diagramme

Nous conseillons donc de ne jamais associer une classe dassociation

gt Transformation des attributs

Pour chaque attribut eacuteleacutementaire et monovalueacute dune classe

on creacutee un attribut correspondant

Attribut

Classe1(ab)

Pour chaque attribut composite comprenant N sous-attributs dune classe

on creacutee N attributs correspondantsdont les noms sont la concateacutenation du nom de lattribut composite avec celui du sous-attribut

Exemple Exemple de classe dassociation

Conseil

Meacutethode Attributs simples

Meacutethode Attributs composites

Contenus annexes

42Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- - - -

Attribut composeacute

Classe1(ab_b1b_b2)

Pour chaque attribut multivalueacute b dune classe C

on creacutee une nouvelle relation RBqui comprend un attribut monovalueacute correspondant agrave bplus la cleacute de la relation repreacutesentant C la cleacute de RB est la concateacutenation des deux attributs

Attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Dans le cas ougrave le nombre maximum de est fini et petit on peut eacutegalement adopter la transformation b

suivante Classe1(ab1b2b3b4b5b6b7b8b9b10)

Si le nombre dattributs est infini ( ) cest impossible sil est trop grand ce nest pas souhaitableb[1]

On combine les regravegles eacutenonceacutees pour les attributs composeacutes et pour les attributs multivalueacutes

Attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Transformation des compositions (cf p42)

Meacutethode Attributs multivalueacutes

Meacutethode Attributs multivalueacutes (meacutethode alternative)

Meacutethode Attributs composeacutes multivalueacutes

Rappel Voir aussi

Contenus annexes

43Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

gt Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Compleacutement Attributs multivalueacutes et composeacutes

Contenus annexes

44Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

Rappel Voir aussi

Rappel

Meacutethode

Contenus annexes

45Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p48)

gt Transformation des associations 1N

Pour chaque association binaire de type 1N

on ajoute agrave la relation cocircteacute N une cleacute eacutetrangegravere vers la relation cocircteacute 1

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Meacutethode

Contenus annexes

46Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Association 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Contrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p46)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

R1

Compleacutement

Rappel

Meacutethode

Contenus annexes

47Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p47)

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Deacutefinition Projection

Contenus annexes

48Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Deacutefinition Projection

Contenus annexes

49Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Transformation des classes dassociation

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de lassociation NM

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Meacutethode Classe dassociation NM

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Exemple de choix pour une relation 11

21

-

- -

-

-

Classe1(ab)

Classe2(cda=gtClasse1) avec a UNIQUE

35 Exemple de choix pour une relation 11

Soit deux entiteacutes homme et femme et une association mariage de cardinaliteacute 1111 entre ces deux entiteacutes (hommes et femmes sont donc obligatoirement marieacutes)Les entiteacutes homme et femme sont identifieacutees par un attribut nom (dans ce modegravele chaque personne a un nom unique on pourrait remplacer le nom par un identifiant comme le numeacutero de seacutecuriteacute social ou par une cleacute artificielle pour ecirctre plus proche de la reacutealiteacute)

Bien que de type 1111 le choix de la fusion nest pas tregraves opportun car il sagit bien dobjets distincts que lon veut modeacuteliser

On choisira donc plutocirct la repreacutesentation avec deux relationsLa cleacute eacutetrangegravere pourra ecirctre du cocircteacute homme ou femme mecircme si la pratique dominante nous incite agrave la mettre du cocircteacute femmeOn pourra eacutegalement deacutecider de prendre la cleacute eacutetrangegravere comme cleacute primaire

1 homme (nom)2 femme (mariage=gthomme nom) avec nom KEY3 Contrainte PROJ(hommenom) = PROJ(femmemariage)

Si lassociation avait eacuteteacute de cardinaliteacute 0101 (certains hommes et femmes ne sont pas marieacutes) un choix similaire se serait imposeacute avec limpossibiliteacute de choisir la cleacute eacutetrangegravere comme cleacute primaire celle-ci pouvant ecirctre nulle et neacutetant donc plus candidate

1 homme (nom)2 femme (nom mariage=gthomme) avec mariage UNIQUE

4 Autres eacuteleacutements utiles en UML packages et steacutereacuteotypesObjectifs

Maicirctriser le diagramme de classe UML dans le cas de la conception de BD

41 Paquetages

Les paquetages (plus communeacutement appeleacutes ) sont des eacuteleacutements servant agrave organiser un modegravelepackage

Ils sont particuliegraverement utiles degraves que le modegravele comporte de nombreuses classes et que celles-ci peuvent ecirctre trieacutees selon plusieurs aspects structurants

Exemple

Exemple

Deacutefinition Package

homme (nom)

femme (mariage=gthomme nom) avec nom KEY

Contrainte PROJ(hommenom) = PROJ(femmemariage)

homme (nom)

femme (nom mariage=gthomme) avec mariage UNIQUE

Steacutereacuteotype

22

Notation des paquetages en UML

Exemple dutilisation des packages

On repreacutesente chaque classe au sein dun Il est alors possible de faire une preacutesentation globale du packagemodegravele (tous les ) partielle (une partie des ) ou centreacutee sur un seul packages packages package

Pour une repreacutesentation partielle ou centreacutee sur un on repreacutesente les concerneacutes avec leurs package packagesclasses propres ainsi que toutes les classes lieacutees des autres packages (et seulement celles-ci)

Preacutesentation partielle du modegravele centreacutee sur un package

Syntaxe

Exemple

Meacutethode

Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt

23

42 Steacutereacuteotype

Un steacutereacuteotype UML est une syntaxe permettant dajouter de la seacutemantique agrave la modeacutelisation des classes Il permet de deacutefinir des afin de regrouper conceptuellement un ensemble de classes (agrave linstar types de classedune classe qui permet de regrouper conceptuellement un ensemble dobjets)

Cest une meacutecanique de meacuteta-modeacutelisation elle permet deacutetendre le meacuteta-modegravele UML cest agrave dire le modegravele conceptuel du modegravele conceptuel

Un meacuteta-modegravele est le modegravele dun modegravele Par exemple le meacuteta-modegravele UML comprend les concepts de classe attribut association cardinaliteacute composition agreacutegation contraintes annotations On mobilise ces concepts (on les instancie) pour exprimer un modegravele particulier suivant le formalisme UML

Les steacutereacuteotypes permettent donc dajouter au meacuteta-modegravele UML standard celui que tout le monde utilise des concepts locaux pour enrichir le langage de modeacutelisation que lon utilise pour reacutealiser des modegraveles

Notation dun steacutereacuteotype en UML

Un steacutereacuteotype speacutecifique enrichit le meacuteta-modegravele UML mais selon une seacutemantique qui est propre agrave celui qui la poseacute non standard donc La conseacutequence est que pour un tiers linterpreacutetation du steacutereacuteotype nest plus normaliseacutee et sera potentiellement plus facilement erroneacutee Il convient donc de ne pas abuser de cette meacutecanique

Deux ou trois steacutereacuteotypes speacutecifiques correctement deacutefinis sont faciles agrave transmettre plusieurs dizaines repreacutesenteraient un nouveau langage complet agrave apprendre pour le lecteur du modegravele

Il existe des steacutereacuteotypes fournit en standard par UML ou communeacutement utiliseacutes par les modeacutelisateurs Lavantage est quil seront compris plus largement au mecircme titre que le reste du meacuteta-modegravele (ils ont une valeur de standard)

43 Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt

Deacutefinition Steacutereacuteotype UML

Deacutefinition Meacuteta-modegravele

Syntaxe

Conseil Steacutereacuteotypes speacutecifiques et steacutereacuteotypes standard

Syntaxe

Type utilisateurs steacutereacuteotype ltltdataTypegtgt

24

Steacutereacuteotype UML permettant dexprimer une eacutenumeacuteration

Exemple de modeacutelisation UML deacutenumeacuteration

44 Type utilisateurs steacutereacuteotype ltltdataTypegtgt

Les types utilisateurs permettent de deacutefinir des types complexes propres en extension des types primaires (entier chaicircne date)

Steacutereacuteotype dataType

Steacutereacuteotype dataType (exemple)

Cette modeacutelisation est eacutequivalente agrave la modeacutelisation des attributs composeacutes directement dans la classe principale Cest une repreacutesentation plus standard en UML

Exemple

Syntaxe

Exemple

Meacutethode Attributs composeacutes

Synthegravese sur la modalisation UML et relationnelle

25

Quelques eacuteleacutements de stylistique UML

26

-

- -

-

-

-

- - -

- - - -

1

2

3

5 Synthegravese sur la modalisation UML et relationnelle51 Quelques eacuteleacutements de stylistique UML

Toutes les associations doivent ecirctre nommeacutees (sauf composition heacuteritage agreacutegation)Ne pas utiliser de nom geacuteneacuterique pour les Classes comme Entiteacute Classe Objet TrucEacuteviter les noms geacuteneacuteriques pour les associations (comme est associeacute agrave)Attention au sens des compositions et agreacutegation le losange est cocircteacute ensemble et noubliez pas les cardinaliteacutes notamment cocircteacute parties

Nutilisez pas le souligneacute ni les en UML pour identifier les cleacutes preacutefeacuterez la contrainte keyPreacutefeacuterez lheacuteritage aux booleacuteens de typage en UMLLes attributs deacuteriveacutes sont reacuteserveacutes aux deacuterivations simples (des attributs de la mecircme classe) si cest plus complexe preacutefeacuterez des meacutethodes (et dans le doute preacutecisez les modes de calcul sur le scheacutema ou dans une note agrave part)Donnez des exemples de contenu lorsque ce nest pas eacutevident (lorsque le couple nom dattribut et type ne permet pas de faccedilon eacutevidente de comprendre de quoi lon parle)Inutile de deacuteclarer le type booleacuteen en UML utilisez-le directement comme un type de donneacutees connu

Si tous vos heacuteritages sont exclusifs notez-le agrave part pour alleacuteger votre scheacutema (et eacuteviter labondance de XOR)

52 Attention aux cleacutes artificielles

en UML on ne pose jamais de cleacutes artificiellesen relationnel on pose rarement des cleacute artificielles sauf dans le cas de cleacutes eacutetrangegraveres vraiment trop compliqueacuteesen SQL on peut poser des cleacutes artificielles si on a une bonne raison (ce nest donc pas systeacutematique et cest agrave justifier)

On najoutera pas de cleacute artificielle en UML au moment de la modeacutelisation conceptuelle des donneacutees

Formellement en UML la notion de cleacute nexiste pas (contrairement agrave l ) elle est ajouteacutee par les E-A

pratiquants des BD

Logiquement on a pas besoin de cette notion en UML les cleacutes artificielles servent en relationnel et dans certains cas uniquementPratiquement cela peut conduire agrave des situations absurdes (comme enlever au niveau logique des cleacutes artificielles ajouteacutees au niveau conceptuel)

Attention

Conseil

Compleacutement

Fondamental

Cleacutes artificielles et niveau conceptuel

Bibliographie commenteacutee sur la modeacutelisation UML

27

-

-

- -

-

- -

-

-

3

4

5

si on fait du non-relationnel on ne doit pas ajouter de cleacutes artificielles dans certains cas (limbrication typiquement) cela arrive mecircme en relationnel avec la transformation de lheacuteritage (dans certains cas toujours)

Meacutethodologiquement il faut se concentrer agrave chaque phase sur ce qui est important donc au moment du MCD on traduit les besoins on repegravere les contraintes explicites (cleacute uniciteacute non nulliteacute) sans se preacuteoccuper de ce qui sera rendu neacutecessaire par la suite par la modeacutelisation relationnelle (les cleacutes eacutetrangegraveres par exemple) ou limpleacutementation (loptimisation par exemple) Agrave chaque jour suffit sa peine Peacutedagogiquement enfin les deacutebutants ont tendance (agrave cause des environnements de conception graphique comme phpMyAdmin notamment) agrave systeacutematiser les cleacutes artificielles en SQL (on pourrait en discuter) mais eacutegalement agrave ne pas faire le travail de recherche des cleacutes naturelles (au niveau relationnel notamment ce qui est une faute de modeacutelisation) Donc au plus tard on fait intervenir les cleacutes artificielles au plus on a une chance de penser aux cleacutes naturelles

Soit le modegravele relationnel suivant

1 Etu (id numEtu) avec numEtu cleacute 2 UV (id codeUv) avec codeUv cleacute3 Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

La question qui permet dafficher la liste des eacutetudiants (numEtu) avec leurs UVs (codeUv) neacutecessite une jointure des cleacutes artificielles Un modegravele sans ces cleacutes artificielles aurait eacuteteacute plus performant pour agrave causereacutepondre agrave cette question puisque toutes les informations se trouvent dans la relation Inscriptions

1 Etu (numEtu) 2 UV (codeUv) 3 Inscriptions (uv=gtUV etu=gtEtu)

Ne soyez pas systeacutematiqueIl est en effet freacutequent dans un projet reacuteel dadopter des cleacutes artificielles presque systeacutematiquement vous pourrez le faire en connaissance de cause quand vous aurez bien compris pourquoi cest inteacuteressant et quand ccedila ne lest pasLes cleacutes artificielles sont inteacuteressantes pour autre chose que les performances (leacutevolutiviteacute par exemple choisissez-les quand vous savez pourquoi)Les cleacutes artificielles ne dispensent pas de rechercher les cleacutes naturelles Les cleacutes artificielles ne sont pas la seule faccedilon doptimiser une base de donneacutees (indexation deacutenormalisation)

53 Bibliographie commenteacutee sur la modeacutelisation UML

Il existe de nombreux outils de modeacutelisation UML On pourra citer

logiciel Open Source et multi-plateformes facile dusage (qui marche neacuteanmoins mieux sur Linux Dia

que sur Windows)

(version gratuite)Objecteering

Cleacutes artificielles et optimisation est-il toujours plus performant dutiliser des cleacutes artificielles

Conseil

Compleacutement Outils de modeacutelisation UML

Etu (id numEtu) avec numEtu cleacute

UV (id codeUv) avec codeUv cleacute

Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

Etu (numEtu)

UV (codeUv)

Inscriptions (uv=gtUV etu=gtEtu)

Bibliographie commenteacutee sur la modeacutelisation UML

28

- - - - - -

- - - - - -

Agrave voir eacutegalement en Open Source ou (non testeacute par lauteur)ArgoUML EclipseUML

UML2 en action

Pour un aperccedilu plus deacutetailleacute des possibiliteacutes dexpression du diagramme de classe UML lire le chapitre 7 Deacuteveloppement du modegravele statique (pages 133 agrave 163)

On pourra notamment y trouver

Lassociation dagreacutegationLes proprieacuteteacutes dassociationLexpression de rocircles dans les associationsLes attributs de classeLes qualificatifsLes opeacuterations (ou meacutethodes)

Le chapitre donne de plus des conseils meacutethodologiques pour la conception (voir en particulier la synthegravese page 163)

On pourra eacutegalement y trouver

Des principes de choix de modeacutelisation entre attributs et classes et sur la segmentation des classesDes principes de seacutelection des attributs (redondance avec les associations avec les classes etc)Des principes de seacutelection des associationsDes principes de choix de cardinaliteacute (notamment pour la gestion dhistorisation)Des principes de seacutelection des relations de geacuteneacuteralisation (heacuteritage)Des principes dintroduction de meacutetaclasses (type)s

U M L e n Franccedilais

Une tregraves bonne reacutefeacuterence en ligne sur la modeacutelisation UML avec des cours des liens vers la norme etc

Le contenu deacutepasse tregraves largement lusage dUML pour la modeacutelisation de BD (et ne fait dailleurs pas de reacutefeacuterence preacutecise agrave ce sous-ensemble particulier)

On pourra consulter en particulier le chapitre sur les diagrammes de classe httpumlfreefrcoursi-p14html

UML en 5 eacutetapes

On consultera en particulier le tutoriel sur les diagrammes de classe httpdeveloppeurjournaldunetcomtutorielcpt010607cpt_umlintroshtml

Cinq petits conseils pour un scheacutema UML efficace

Compleacutement Modeacutelisation UML

Compleacutement Reacutefeacuterence UML en ligne

Compleacutement Tutoriel sur la modeacutelisation UML

Compleacutement Conseils

Synthegravese Les diagrammes de modeacutelisation conceptuelle

29

-

-

- -

-

- -

-

-

- -

-

- - - -

-

-

(chapitre 3)UML2 par la pratique

Des explications exemples et eacutetudes de cas

54 Synthegravese Les diagrammes de modeacutelisation conceptuelle

Un modegravele conceptuel peut ecirctre repreacutesenteacute sous forme de diagramme E-A ou sous forme de diagramme de classe UML

Classe ou Entiteacute

Attribut ou Proprieacuteteacute

TypeacuteMulti-valueacuteComposeacuteDeacuteriveacute

Meacutethode

ParamegravetresValeur de retour

Association

Association

VerbeCardinaliteacute

Heacuteritage

Heacuteritage dattributsHeacuteritage de meacutethodes

Composition (ou entiteacute faible)

Cardinaliteacute

Compleacutement Pratique

Exercices

30

-

-

-

-

-

-

-

1 2

1

1 Exercice Lab III[20 min]

Description du problegraveme

Un laboratoire souhaite geacuterer les meacutedicaments quil conccediloit

Un meacutedicament est deacutecrit par un nom qui permet de lidentifier En effet il nexiste pas deux meacutedicaments avec le mecircme nom Un meacutedicament comporte une description courte en franccedilais ainsi quune description longue en latin On gegravere aussi le conditionnement du meacutedicament cest agrave dire le nombre de pilules par boicircte (qui est un nombre entier)Agrave chaque meacutedicament on associe une liste deacutedieacutee de contre-indications geacuteneacuteralement plusieurs parfois aucune Les contre-indications sont trieacutees par ordre dimportance Lordre est total est strict pour un meacutedicament donc chaque contre-indication possegravede une importance et il nexiste pas deux contre-indications associeacutees au mecircme meacutedicament avec la mecircme importanceTout meacutedicament possegravede au moins un composant souvent plusieurs Un composant est identifieacute par un code unique et possegravede un intituleacute Tout composant peut intervenir dans la fabrication de plusieurs meacutedicaments Il existe des composants qui ne sont pas utiliseacutes pour fabriquer des meacutedicaments et que lon veut quand mecircme geacuterer

Donneacutees de test

Afin de mateacuterialiser notre base de donneacutees nous obtenons les descriptions suivantes

Le a pour description courte et pour description longue Chourix Meacutedicament contre la chute des chouxlaquo raquoVivamus fermentum semper porta Nunc diam velit adipiscing ut tristique vitae sagittis vel odio laquo

Il est conditionneacute en boicircte de 13Maecenas convallis ullamcorper ultricies Curabitur ornare raquoSes contre-indications sont

Le Chourix ne doit jamais ecirctre pris apregraves minuitLe Chourix ne doit jamais ecirctre mis au contact avec de leau

Ses composants sont le et le HG79 SN50Le a pour description courte et pour Tropas Meacutedicament contre les dysfonctionnements intellectuelslaquo raquodescription longue Suspendisse lectus leo consectetur in tempor sit amet placerat quis neque Etiam laquo

Il est conditionneacute en boicircte de 42luctus porttitor lorem sed suscipit est rutrum non raquoSes contre-indications sont

Le Tropas doit ecirctre gardeacute agrave labri de la lumiegravere du soleil

Son unique composant est le HG79Les composants existants sont

HG79 Vif-argent alleacutegeacute

ExercicesII

Exercice Eacutetudiants et UVs (introduction)

31

- - -

- - HG81 Vif-argent alourdi

SN50 Pur eacutetain

Question 1

Question 2

Question 3

2 Exercice Eacutetudiants et UVs (introduction)[20 min]

On dispose du scheacutema UML ci-apregraves qui deacutecrit des eacutetudiants des UV les notes obtenues par les eacutetudiants agrave ces UV et les diplocircmes dorigine de ces eacutetudiants

Eacutetudiants et UVs

key deacutesigne des cleacutes candidates ici toutes les cleacutes ne sont composeacutees que dun seul attributlocal key deacutesigne une cleacute localeun semestre est de la forme PYYYY ou AYYYY (ougrave YYYY deacutesigneacute une anneacutee sur 4 chiffre) exemple A2013 P2014

Rappel Notion de cleacute locale dans classes dassociation (cf p49)

Effectuez le modegravele conceptuel en UML de ce problegraveme

Indices

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans deacutedieacuteeles donneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition

[ ]solution ndeg4 [ ] p56

En mobilisant les regravegles adeacutequates proposer un modegravele logique de donneacutees correspondant en relationnel Le repeacuterage des domaines et des cleacutes est obligatoire

[ ]solution ndeg5 [ ] p57

Dessiner des tableaux remplis avec les donneacutees fournies en exemple afin de montrer que le modegravele fonctionne selon le besoin exprimeacute initialement On pourra mettre le premier mot seulement des descriptions pour gagner du temps

[ ]solution ndeg6 [ ] p57

Exercice Super-heacuteros relationnels I

32

-

-

Question

3 Exercice Super-heacuteros relationnels I[20 min]

La gamme de super-heacuteros GARVEL veut reacutealiser la base de donneacutees de leurs figurines articuleacutees La socieacuteteacute a fait reacutealiser un modegravele UML qui doit servir de point de deacutepart agrave la mise en œuvre

Modegravele UML Figurines GARVEL

Question

4 Exercice Objets Numeacuteriques Libres[30 min]

Lassociation ONL (Objets Numeacuteriques Libres) est une association de promotion des logiciels libres Elle souhaite exposer sur un site Internet une liste de logiciels libres Ce site sera adosseacute agrave une base de donneacutees relationnelle ou relationnel-objet La premiegravere eacutetape de sa deacutemarche est de reacutealiser un modegravele conceptuel repreacutesentant ce quelle souhaite faire

La base de donneacutees permet de geacuterer des applicationsLes applications sont identifieacutees par leur nom (LibreOffice Gimp) et leur version (10 21) et comportent une description courte et une URL Tous les attributs sont obligatoires Chaque application a une URL uniqueLa base de donneacutees permet de geacuterer des librairies

Traduire le scheacutema en modegravele logique relationnel ( )MLD1

On choisira obligatoirement les cleacutes primaires parmi celles neacutecessitant le plus petit nombre de bits possible pour leur codage

[ ]solution ndeg7 [ ] p57

Transformer le modegravele UML en modegravele relationnel (justifier les passages non triviaux en particulier la relation dheacuteritage)

[ ]solution ndeg8 [ ] p58

Exercice Objets Numeacuteriques Libres

33

-

-

-

-

-

-

-

-

-

-

-

-

Les librairies sont des logiciels mais pas des applications Elles ont les mecircmes attributs que les applications (nom version description courte URL) mais les URL ne sont pas neacutecessairement uniques Les applications peuvent deacutependre de librairies ou dautres applications et les librairies peuvent deacutependre dautres librairies (mais pas dune application)La base de donneacutees permet de geacuterer des composantsLes composants sont inteacutegreacutes agrave une application ou librairie Les composants ont un code interne agrave lapplication ou la librairie quil servent une version et une description courte et une URL Le code et le numeacutero de version permettent didentifier localement le composant au sein de la librairie ou de lapplication la description courte et lURL sont optionnellesLa base de donneacutees permet de geacuterer des licencesLes applications librairies et composants sont attacheacutes agrave une ou plusieurs licences identifieacutees par leur nom (GPL MPL) leur version et leur langue et comportant le texte inteacutegral de la licence Les versions des logiciels et licences sont de type numeacutero de licence majeur point numeacutero de licence mineur comme 10 ou 22La base de donneacutees permet de geacuterer des cateacutegoriesChaque logiciel est rangeacute dans une cateacutegorie principale et plusieurs cateacutegories secondaires Exemple de cateacutegories bureautique dessin multimeacutedia physique

Exemple (factice) de donneacutees

Applications

Scenari 41 une chaicircne eacuteditoriale XML httpscenariorg deacutepend de Libreoffice 43 et de ImageMagick 68Libreoffice 43 une suite bureautique WYSIWYG httplibreofficeorg

Librairie

ImageMagick 68 permet de creacuteer de convertir de modifier et dafficher des images http imagemagickorg

Composant

impng 02 est un composant de ImageMagick 68 permet de compresser une image au format PNG

Toutes ces applications librairies et composants sont disponibles sous une licence LGPL 30 et GPL 30 franccedilaisesToutes ces applications et librairies sont rangeacutees dans la cateacutegorie principale document Scenari est rangeacute dans la cateacutegorie secondaire Eacutedition WYSIWYM Libreoffice dans la cateacutegorie secondaire Bureautique ImageMagick dans la cateacutegorie secondaire Multimeacutedia

Question

Reacutealiser un MCD en UML[ ]solution ndeg9 [ ] p58

Devoirs

34

1 Exercice Arbre de scegravene 3D[30 minutes]

On souhaite pouvoir geacuterer les diffeacuterents eacuteleacutements composant des scegravenes 3D dans une base de donneacutees Une scegravene contient des objets qui eux-mecircmes peuvent appartenir agrave plusieurs scegravenes (au moins une) mais il ne peut y avoir plusieurs fois le mecircme objet dans une mecircme scegravene Dans chaque scegravene les objets peuvent ecirctre visibles ou invisibles Les scegravenes et les objets sont identifieacutes de maniegravere unique par un nom Une scegravene peut ecirctre active ou inactive Un objet a comme proprieacuteteacute une position dans lespace repreacutesenteacutee par un vecteur de reacuteels agrave trois composantes (x y z) Les objets sont organiseacutes de maniegravere hieacuterarchique un objet peut ecirctre parent de plusieurs objets et chaque objet peut avoir au plus un parent Des scripts peuvent ecirctre associeacutes agrave un objet ou agrave une scegravene (agrave lun ou agrave lautre mais pas aux deux) Un script est identifieacute de maniegravere unique par un nom et possegravede eacutegalement un attribut permettant de connaicirctre son eacutetat (actif ou inactif) Un personnage est un objet particulier qui possegravede des animations Une animation est relative agrave un personnage et est identifieacutee de maniegravere locale par un nom Agrave un objet est associeacute un maillage et celui-ci peut ecirctre utiliseacute par plusieurs objets Un maillage est identifieacute de maniegravere unique par un nom et est composeacute de plusieurs eacuteleacutements Chaque eacuteleacutement est relatif agrave un maillage et est identifieacute de maniegravere locale par un numeacutero Il existe exactement trois types deacuteleacutement des nœuds des arrecirctes et des faces Une face est deacutelimiteacutee par trois arrecirctes et chaque arrecircte est deacutelimiteacutee par deux nœuds Plusieurs arrecirctes peuvent partager un mecircme nœud et plusieurs faces peuvent partager une mecircme arrecircte Afin deacutevaluer la complexiteacute dune scegravene on souhaite pouvoir calculer le nombre de faces afficheacutees pour une scegravene donneacutee (cest-agrave-dire la somme du nombre de faces du maillage associeacute aux objets visibles de la scegravene) Un maillage possegravede plusieurs mateacuteriaux identifieacutes de maniegravere unique par un nom Un mateacuteriau peut ecirctre associeacute agrave plusieurs maillages Un mateacuteriau est caracteacuteriseacute par une couleur deacutefinie par un vecteur dentiers agrave quatre composantes rouge vert bleu alpha Un mateacuteriau peut posseacuteder une texture et celle-ci peut ecirctre utiliseacutee par plusieurs mateacuteriaux Une texture est identifieacutee de maniegravere unique par un nom et possegravede comme attribut une image

Question 1

Question 2

DevoirsIII

Proposez une clarification de ce problegraveme On pourra reclasser les informations par grande cateacutegorie scegravene objets scripts

Eacutetablissez un modegravele conceptuel en UML de ce problegraveme

Compleacutement Exercices de modeacutelisation suppleacutementaire

35

1 Exercice Appartements agrave louer[30 min]

Une agence dimmobilier (ventes et locations) veut geacuterer son parc dappartements dans une base de donneacutees Chaque appartement possegravede plusieurs piegraveces qui peuvent ecirctre des piegraveces dhabitation des piegraveces de rangement ou des commoditeacutes

Chaque piegravece a une superficie un nombre de prises eacutelectriques et des meubles Pour ces derniers on veut enregistrer le nom du modegravele et le type (chaise lit four etc) Rien nempecircche quune piegravece comporte plusieurs meubles identiques (par exemple plusieurs chaises PIN IQUEA) Les piegraveces dhabitation ont une ou plusieurs fenecirctres les piegraveces de rangement ont une ou plusieurs eacutetagegraveres et une surface de rangement utile totale On veut aussi savoir dans quelles piegraveces de rangement se situent les tableaux eacutelectriques de lappartement Finalement les piegraveces commoditeacutes peuvent ecirctre de trois types cuisine toilette ou salle de bain

Lagence veut aussi enregistrer les portes entre les diffeacuterentes piegraveces Une porte peut ecirctre agrave simple battant double battant coulissante ou une simple ouverture

Chaque appartement a une adresse une superficie totale (qui est la somme des superficies des piegraveces) et un type qui est la lettre T suivie du nombre de piegraveces dhabitation de lappartement Pour un appartement donneacute chaque piegravece est identifieacutee par un numeacutero (commenccedilant au numeacutero 1)

Lagence veut eacutegalement enregistrer le quartier ougrave se trouve lappartement auquel est lieacute un prix par megravetre carreacute Finalement elle veut garder un historique de lhistoire de lappartement les peacuteriodes pour lesquelles il est libre occupeacute en travaux ou vendu

Question

2 Exercice Objectifs[40 min]

Vous prenez la preacutesidence de lassociation Objectifs dont lobjet est daider ses eacutetudiants membres agrave mener des projets dans le cadre de leurs eacutetudes

Compleacutement Exercices de modeacutelisation suppleacutementaire

IV

Reacutealisez le diagramme UML reacutepondant aux besoins de cette agence[ ]solution ndeg10 [ ] p59

Exercice Objectifs

36

- - -

-

-

- - -

Vous constatez en arrivant dans lassociation que personne ne sait exactement quels sont les projets en cours ni qui fait quoi dans les projets Vous ne parvenez pas non plus agrave obtenir une liste exacte des partenaires sur lesquels lassociation peut compter La seule chose sur laquelle vous parvenez agrave mettre la main est un fichier tableur vaguement agrave jour

Vous deacutecidez quil est plus que temps de mettre en place une base de donneacutees afin dassurer la bonne gestion des informations les plus importantes pour lassociation Vous vous attachez pour cela agrave reacutealiser une analyse des besoins

Analysez les documents ci-apregraves

Etat des projets

Eacutetat des projets de lassociation Objectifs

Recueil de besoins

Agrave partir de leacutetude du fonctionnement actuel de lassociation vous relevez les choses importantes agrave geacuterer suivantes

Les membres de lassociation geacuteneacuteralement identifieacutes par leur preacutenomLes projets geacutereacutes par lassociation avec des dates de deacutebut et de fin preacutecises et un chef de projetLe deacutetail des tacircches de chaque projet avec leurs dates de deacutebut et de fin aussi et la liste de tous les membres qui y participentLa liste des partenaires des projets avec leur rocircle preacutecis pour chacun des projets auxquels ils participent

Afin de mieux geacuterer les attributions des projets il serait eacutegalement inteacuteressant de creacuteer une liste des speacutecialiteacutes correspondant agrave ce qui ce fait dans lassociation et daffecter une speacutecialiteacute agrave chaque membre ainsi quune agrave chaque projet pour voir si ce sont bien les membres les mieux adapteacutes qui travaille sur les projets

Recueil de donneacutees

Les discussions avec les anciens membres de lassociation vous apprennent les choses suivantes

Lassociation a termineacute de geacuterer les trois projets Comeacutedie Musicale geacutereacutee par Nathalie sur les trois premiers mois du semestre dautomne 1001 Science en fecircte geacutereacutee par Pierre sur tout le semestre de printemps 1003 et Nuit du picolo geacutereacutee par Julien en novembre 1001Les speacutecialiteacutes recenseacutees pour le moment sont Ville Universiteacute Sport Entreprise Culture InternationalIl faut au moins dix membres agrave lassociation (sinon elle ferme) recruter ceux qui manquentAidez lassociation agrave diviser ses projets en tacircches

Exercice Objectifs

37

- Les partenaires suivants aident ou ont aideacute lassociation la mairie pour la comeacutedie musicale et la science en fecircte qui apporte un soutien financier le ministegravere de la culture qui apporte son soutien logistique agrave la science en fecircte lassociation des commerccedilants de la ville qui apporte son soutien publicitaire agrave la comeacutedie musicale 1664 qui offre ses biegraveres agrave moitieacute prix pour la nuit du Picolo

Question 1

Question 2

Question 3

Afin de preacuteparer une analyse des besoins sommaire listez les donneacutees que vous devrez geacuterer agrave laide des documents et recueils de discussion agrave votre disposition Faites des hypothegraveses lorsque les donneacutees sont incomplegravetes ou incoheacuterentes

[ ]solution ndeg11 [ ] p59

Reacutealiser le MCD en UML et en E-A agrave partir des donneacutees preacutepareacutees dans la question preacuteceacutedente[ ]solution ndeg12 [ ] p60

Reacutealiser le MLD en relationnel en traduisant votre MCD[ ]solution ndeg13 [ ] p61

Contenus annexes

38Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

- - -

gt Attributs

Un attribut est une information eacuteleacutementaire qui caracteacuterise une classe et dont la valeur deacutepend de lobjet instancieacute

Le domaine des valeurs que peut prendre lattribut est fixeacute a prioriUn attribut est typeacute

Il peut prendre plusieurs valeurs distinctes dans son domaineUn attribut peut ecirctre multivalueacute Sa valeur alors est une fonction sur dautres attributs de la classeUn attribut peut ecirctre deacuteriveacute

(ou composite) Il joue alors le rocircle dun groupe dattributs (par Un attribut peut ecirctre composeacuteexemple une adresse peut ecirctre un attribut composeacute des attributs numeacutero type de voie nom de la voie) Cette notion renvoie agrave la notion de variable de type dans les langages de Record

programmation classiques

En UML on preacutefegravere lusage de meacutethodes aux attributs deacuteriveacutes On utilisera toujours des meacutethodes degraves que la valeur de lattribut deacuteriveacute deacutepend dautres attributs exteacuterieurs agrave sa classeEn UML on preacutefegravere lusage de compositions aux attributs composeacutes On utilisera toujours des compositions pour les attributs composeacutes et multivalueacutes

1 attributtype2 attribut_multivalueacute[nbMinValeursnbMaxValeurs]type3 attribut_deacuteriveacutetype4 attribut_composeacute5   - sous-attribut1type6   - sous-attribut2type7   -

Contenus annexes

Deacutefinition Attribut

Attention On utilise peu les attributs deacuteriveacutes et composeacutes en UML

Syntaxe

attributtype

attribut_multivalueacute[nbMinValeursnbMaxValeurs]type

attribut_deacuteriveacutetype

attribut_composeacute

  - sous-attribut1type

  - sous-attribut2type

  -

Contenus annexes

39Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Repreacutesentation dattributs en UML

Dans cet exemple les attributs Nom Preacutenom sont de type lun de 20 caractegraveres et lautre de 10 stringtandis que DateNaissance est de type et Age de type Preacutenom est un attribut multivalueacute ici date integerune personne peut avoir de 1 agrave 3 preacutenoms Age est un attribut deacuteriveacute il est calculeacute par une fonction sur DateNaissance

Meacutethodes (cf p39)

Composition (cf p5)

gt Meacutethodes

Une meacutethode (ou opeacuteration) est une fonction associeacutee agrave une classe dobjet qui permet dagir sur les objets de la classe ou qui permet agrave ces objets de renvoyer des valeurs (calculeacutees en fonction de paramegravetres)

1 methode(paramegravetres)type

Pour la modeacutelisation des bases de donneacutees les meacutethodes sont surtout utiliseacutees pour repreacutesenter des donneacutees calculeacutees (agrave linstar des attributs deacuteriveacutees) ou pour mettre en exergue des fonctions importantes du systegraveme cible Seules les meacutethodes les plus importantes sont repreacutesenteacutees lapproche est moins systeacutematique quen modeacutelisation objet par exemple

Lors de la transformation du modegravele conceptuel UML en modegravele logique relationnel les meacutethodes ne Leur repeacuterage au niveau conceptuel sert donc surtout daide-seront geacuteneacuteralement pas impleacutementeacutees

meacutemoire pour limpleacutementation au niveau applicatif

Exemple La classe Personne

Compleacutement Voir aussi

Deacutefinition Meacutethode

Syntaxe

Remarque Meacutethodes et modeacutelisation de BD

Remarque Meacutethodes relationnel relationnel-objet

methode(paramegravetres)type

Contenus annexes

40Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Au contraire un modegravele logique relationnel-objet permettra limpleacutementation de meacutethodes directement associeacutees agrave des tables Leur repeacuterage au niveau conceptuel est donc encore plus important

Transformation des meacutethodes par des vues (cf p40)

gt Transformation des meacutethodes par des vues

Lorsquune meacutethode est speacutecifieacutee sur un diagramme UML pour une classe C si cette meacutethode est une fonction relationnelle (elle renvoie une unique valeur et elle peut ecirctre reacutesolue par une requecircte SQL) alors on creacutee une vue qui reprend les attributs de la classe C et ajoute des colonnes calculeacutees pour les meacutethodes

Les attributs deacuteriveacutes eacutetant apparenteacutes agrave des meacutethodes ils peuvent eacutegalement ecirctre geacutereacutes par des vues

gt Classe dassociation

On utilise la notation des classes dassociation lorsque lon souhaite ajouter des proprieacuteteacutes agrave une association

Notation dune classe dassociation en UML

On reacuteserve en geacuteneacuteral les classes dassociation aux associations NM

Il est toujours possible de reacuteduire une classe dassociation sur une association 1N en migrant ses attributs sur la classe cocircteacute N et cest en geacuteneacuteral plus lisible ainsi

Compleacutement

Meacutethode

Remarque Attributs deacuteriveacutes

Deacutefinition Classe dassociation

Syntaxe Notation dune classe dassociation en UML

Meacutethode

Contenus annexes

41Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

-

Emplois

Selon le standard UML une classe dassociation est une classe et agrave ce titre elle peut ecirctre mobiliseacutee dans dautres associations ou dans des heacuteritages Nous deacuteconseillons neacuteanmoins ces notations qui ont tendance agrave complexifier la lecture et la transformation du diagramme

Nous conseillons donc de ne jamais associer une classe dassociation

gt Transformation des attributs

Pour chaque attribut eacuteleacutementaire et monovalueacute dune classe

on creacutee un attribut correspondant

Attribut

Classe1(ab)

Pour chaque attribut composite comprenant N sous-attributs dune classe

on creacutee N attributs correspondantsdont les noms sont la concateacutenation du nom de lattribut composite avec celui du sous-attribut

Exemple Exemple de classe dassociation

Conseil

Meacutethode Attributs simples

Meacutethode Attributs composites

Contenus annexes

42Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- - - -

Attribut composeacute

Classe1(ab_b1b_b2)

Pour chaque attribut multivalueacute b dune classe C

on creacutee une nouvelle relation RBqui comprend un attribut monovalueacute correspondant agrave bplus la cleacute de la relation repreacutesentant C la cleacute de RB est la concateacutenation des deux attributs

Attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Dans le cas ougrave le nombre maximum de est fini et petit on peut eacutegalement adopter la transformation b

suivante Classe1(ab1b2b3b4b5b6b7b8b9b10)

Si le nombre dattributs est infini ( ) cest impossible sil est trop grand ce nest pas souhaitableb[1]

On combine les regravegles eacutenonceacutees pour les attributs composeacutes et pour les attributs multivalueacutes

Attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Transformation des compositions (cf p42)

Meacutethode Attributs multivalueacutes

Meacutethode Attributs multivalueacutes (meacutethode alternative)

Meacutethode Attributs composeacutes multivalueacutes

Rappel Voir aussi

Contenus annexes

43Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

gt Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Compleacutement Attributs multivalueacutes et composeacutes

Contenus annexes

44Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

Rappel Voir aussi

Rappel

Meacutethode

Contenus annexes

45Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p48)

gt Transformation des associations 1N

Pour chaque association binaire de type 1N

on ajoute agrave la relation cocircteacute N une cleacute eacutetrangegravere vers la relation cocircteacute 1

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Meacutethode

Contenus annexes

46Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Association 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Contrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p46)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

R1

Compleacutement

Rappel

Meacutethode

Contenus annexes

47Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p47)

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Deacutefinition Projection

Contenus annexes

48Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Deacutefinition Projection

Contenus annexes

49Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Transformation des classes dassociation

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de lassociation NM

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Meacutethode Classe dassociation NM

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Steacutereacuteotype

22

Notation des paquetages en UML

Exemple dutilisation des packages

On repreacutesente chaque classe au sein dun Il est alors possible de faire une preacutesentation globale du packagemodegravele (tous les ) partielle (une partie des ) ou centreacutee sur un seul packages packages package

Pour une repreacutesentation partielle ou centreacutee sur un on repreacutesente les concerneacutes avec leurs package packagesclasses propres ainsi que toutes les classes lieacutees des autres packages (et seulement celles-ci)

Preacutesentation partielle du modegravele centreacutee sur un package

Syntaxe

Exemple

Meacutethode

Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt

23

42 Steacutereacuteotype

Un steacutereacuteotype UML est une syntaxe permettant dajouter de la seacutemantique agrave la modeacutelisation des classes Il permet de deacutefinir des afin de regrouper conceptuellement un ensemble de classes (agrave linstar types de classedune classe qui permet de regrouper conceptuellement un ensemble dobjets)

Cest une meacutecanique de meacuteta-modeacutelisation elle permet deacutetendre le meacuteta-modegravele UML cest agrave dire le modegravele conceptuel du modegravele conceptuel

Un meacuteta-modegravele est le modegravele dun modegravele Par exemple le meacuteta-modegravele UML comprend les concepts de classe attribut association cardinaliteacute composition agreacutegation contraintes annotations On mobilise ces concepts (on les instancie) pour exprimer un modegravele particulier suivant le formalisme UML

Les steacutereacuteotypes permettent donc dajouter au meacuteta-modegravele UML standard celui que tout le monde utilise des concepts locaux pour enrichir le langage de modeacutelisation que lon utilise pour reacutealiser des modegraveles

Notation dun steacutereacuteotype en UML

Un steacutereacuteotype speacutecifique enrichit le meacuteta-modegravele UML mais selon une seacutemantique qui est propre agrave celui qui la poseacute non standard donc La conseacutequence est que pour un tiers linterpreacutetation du steacutereacuteotype nest plus normaliseacutee et sera potentiellement plus facilement erroneacutee Il convient donc de ne pas abuser de cette meacutecanique

Deux ou trois steacutereacuteotypes speacutecifiques correctement deacutefinis sont faciles agrave transmettre plusieurs dizaines repreacutesenteraient un nouveau langage complet agrave apprendre pour le lecteur du modegravele

Il existe des steacutereacuteotypes fournit en standard par UML ou communeacutement utiliseacutes par les modeacutelisateurs Lavantage est quil seront compris plus largement au mecircme titre que le reste du meacuteta-modegravele (ils ont une valeur de standard)

43 Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt

Deacutefinition Steacutereacuteotype UML

Deacutefinition Meacuteta-modegravele

Syntaxe

Conseil Steacutereacuteotypes speacutecifiques et steacutereacuteotypes standard

Syntaxe

Type utilisateurs steacutereacuteotype ltltdataTypegtgt

24

Steacutereacuteotype UML permettant dexprimer une eacutenumeacuteration

Exemple de modeacutelisation UML deacutenumeacuteration

44 Type utilisateurs steacutereacuteotype ltltdataTypegtgt

Les types utilisateurs permettent de deacutefinir des types complexes propres en extension des types primaires (entier chaicircne date)

Steacutereacuteotype dataType

Steacutereacuteotype dataType (exemple)

Cette modeacutelisation est eacutequivalente agrave la modeacutelisation des attributs composeacutes directement dans la classe principale Cest une repreacutesentation plus standard en UML

Exemple

Syntaxe

Exemple

Meacutethode Attributs composeacutes

Synthegravese sur la modalisation UML et relationnelle

25

Quelques eacuteleacutements de stylistique UML

26

-

- -

-

-

-

- - -

- - - -

1

2

3

5 Synthegravese sur la modalisation UML et relationnelle51 Quelques eacuteleacutements de stylistique UML

Toutes les associations doivent ecirctre nommeacutees (sauf composition heacuteritage agreacutegation)Ne pas utiliser de nom geacuteneacuterique pour les Classes comme Entiteacute Classe Objet TrucEacuteviter les noms geacuteneacuteriques pour les associations (comme est associeacute agrave)Attention au sens des compositions et agreacutegation le losange est cocircteacute ensemble et noubliez pas les cardinaliteacutes notamment cocircteacute parties

Nutilisez pas le souligneacute ni les en UML pour identifier les cleacutes preacutefeacuterez la contrainte keyPreacutefeacuterez lheacuteritage aux booleacuteens de typage en UMLLes attributs deacuteriveacutes sont reacuteserveacutes aux deacuterivations simples (des attributs de la mecircme classe) si cest plus complexe preacutefeacuterez des meacutethodes (et dans le doute preacutecisez les modes de calcul sur le scheacutema ou dans une note agrave part)Donnez des exemples de contenu lorsque ce nest pas eacutevident (lorsque le couple nom dattribut et type ne permet pas de faccedilon eacutevidente de comprendre de quoi lon parle)Inutile de deacuteclarer le type booleacuteen en UML utilisez-le directement comme un type de donneacutees connu

Si tous vos heacuteritages sont exclusifs notez-le agrave part pour alleacuteger votre scheacutema (et eacuteviter labondance de XOR)

52 Attention aux cleacutes artificielles

en UML on ne pose jamais de cleacutes artificiellesen relationnel on pose rarement des cleacute artificielles sauf dans le cas de cleacutes eacutetrangegraveres vraiment trop compliqueacuteesen SQL on peut poser des cleacutes artificielles si on a une bonne raison (ce nest donc pas systeacutematique et cest agrave justifier)

On najoutera pas de cleacute artificielle en UML au moment de la modeacutelisation conceptuelle des donneacutees

Formellement en UML la notion de cleacute nexiste pas (contrairement agrave l ) elle est ajouteacutee par les E-A

pratiquants des BD

Logiquement on a pas besoin de cette notion en UML les cleacutes artificielles servent en relationnel et dans certains cas uniquementPratiquement cela peut conduire agrave des situations absurdes (comme enlever au niveau logique des cleacutes artificielles ajouteacutees au niveau conceptuel)

Attention

Conseil

Compleacutement

Fondamental

Cleacutes artificielles et niveau conceptuel

Bibliographie commenteacutee sur la modeacutelisation UML

27

-

-

- -

-

- -

-

-

3

4

5

si on fait du non-relationnel on ne doit pas ajouter de cleacutes artificielles dans certains cas (limbrication typiquement) cela arrive mecircme en relationnel avec la transformation de lheacuteritage (dans certains cas toujours)

Meacutethodologiquement il faut se concentrer agrave chaque phase sur ce qui est important donc au moment du MCD on traduit les besoins on repegravere les contraintes explicites (cleacute uniciteacute non nulliteacute) sans se preacuteoccuper de ce qui sera rendu neacutecessaire par la suite par la modeacutelisation relationnelle (les cleacutes eacutetrangegraveres par exemple) ou limpleacutementation (loptimisation par exemple) Agrave chaque jour suffit sa peine Peacutedagogiquement enfin les deacutebutants ont tendance (agrave cause des environnements de conception graphique comme phpMyAdmin notamment) agrave systeacutematiser les cleacutes artificielles en SQL (on pourrait en discuter) mais eacutegalement agrave ne pas faire le travail de recherche des cleacutes naturelles (au niveau relationnel notamment ce qui est une faute de modeacutelisation) Donc au plus tard on fait intervenir les cleacutes artificielles au plus on a une chance de penser aux cleacutes naturelles

Soit le modegravele relationnel suivant

1 Etu (id numEtu) avec numEtu cleacute 2 UV (id codeUv) avec codeUv cleacute3 Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

La question qui permet dafficher la liste des eacutetudiants (numEtu) avec leurs UVs (codeUv) neacutecessite une jointure des cleacutes artificielles Un modegravele sans ces cleacutes artificielles aurait eacuteteacute plus performant pour agrave causereacutepondre agrave cette question puisque toutes les informations se trouvent dans la relation Inscriptions

1 Etu (numEtu) 2 UV (codeUv) 3 Inscriptions (uv=gtUV etu=gtEtu)

Ne soyez pas systeacutematiqueIl est en effet freacutequent dans un projet reacuteel dadopter des cleacutes artificielles presque systeacutematiquement vous pourrez le faire en connaissance de cause quand vous aurez bien compris pourquoi cest inteacuteressant et quand ccedila ne lest pasLes cleacutes artificielles sont inteacuteressantes pour autre chose que les performances (leacutevolutiviteacute par exemple choisissez-les quand vous savez pourquoi)Les cleacutes artificielles ne dispensent pas de rechercher les cleacutes naturelles Les cleacutes artificielles ne sont pas la seule faccedilon doptimiser une base de donneacutees (indexation deacutenormalisation)

53 Bibliographie commenteacutee sur la modeacutelisation UML

Il existe de nombreux outils de modeacutelisation UML On pourra citer

logiciel Open Source et multi-plateformes facile dusage (qui marche neacuteanmoins mieux sur Linux Dia

que sur Windows)

(version gratuite)Objecteering

Cleacutes artificielles et optimisation est-il toujours plus performant dutiliser des cleacutes artificielles

Conseil

Compleacutement Outils de modeacutelisation UML

Etu (id numEtu) avec numEtu cleacute

UV (id codeUv) avec codeUv cleacute

Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

Etu (numEtu)

UV (codeUv)

Inscriptions (uv=gtUV etu=gtEtu)

Bibliographie commenteacutee sur la modeacutelisation UML

28

- - - - - -

- - - - - -

Agrave voir eacutegalement en Open Source ou (non testeacute par lauteur)ArgoUML EclipseUML

UML2 en action

Pour un aperccedilu plus deacutetailleacute des possibiliteacutes dexpression du diagramme de classe UML lire le chapitre 7 Deacuteveloppement du modegravele statique (pages 133 agrave 163)

On pourra notamment y trouver

Lassociation dagreacutegationLes proprieacuteteacutes dassociationLexpression de rocircles dans les associationsLes attributs de classeLes qualificatifsLes opeacuterations (ou meacutethodes)

Le chapitre donne de plus des conseils meacutethodologiques pour la conception (voir en particulier la synthegravese page 163)

On pourra eacutegalement y trouver

Des principes de choix de modeacutelisation entre attributs et classes et sur la segmentation des classesDes principes de seacutelection des attributs (redondance avec les associations avec les classes etc)Des principes de seacutelection des associationsDes principes de choix de cardinaliteacute (notamment pour la gestion dhistorisation)Des principes de seacutelection des relations de geacuteneacuteralisation (heacuteritage)Des principes dintroduction de meacutetaclasses (type)s

U M L e n Franccedilais

Une tregraves bonne reacutefeacuterence en ligne sur la modeacutelisation UML avec des cours des liens vers la norme etc

Le contenu deacutepasse tregraves largement lusage dUML pour la modeacutelisation de BD (et ne fait dailleurs pas de reacutefeacuterence preacutecise agrave ce sous-ensemble particulier)

On pourra consulter en particulier le chapitre sur les diagrammes de classe httpumlfreefrcoursi-p14html

UML en 5 eacutetapes

On consultera en particulier le tutoriel sur les diagrammes de classe httpdeveloppeurjournaldunetcomtutorielcpt010607cpt_umlintroshtml

Cinq petits conseils pour un scheacutema UML efficace

Compleacutement Modeacutelisation UML

Compleacutement Reacutefeacuterence UML en ligne

Compleacutement Tutoriel sur la modeacutelisation UML

Compleacutement Conseils

Synthegravese Les diagrammes de modeacutelisation conceptuelle

29

-

-

- -

-

- -

-

-

- -

-

- - - -

-

-

(chapitre 3)UML2 par la pratique

Des explications exemples et eacutetudes de cas

54 Synthegravese Les diagrammes de modeacutelisation conceptuelle

Un modegravele conceptuel peut ecirctre repreacutesenteacute sous forme de diagramme E-A ou sous forme de diagramme de classe UML

Classe ou Entiteacute

Attribut ou Proprieacuteteacute

TypeacuteMulti-valueacuteComposeacuteDeacuteriveacute

Meacutethode

ParamegravetresValeur de retour

Association

Association

VerbeCardinaliteacute

Heacuteritage

Heacuteritage dattributsHeacuteritage de meacutethodes

Composition (ou entiteacute faible)

Cardinaliteacute

Compleacutement Pratique

Exercices

30

-

-

-

-

-

-

-

1 2

1

1 Exercice Lab III[20 min]

Description du problegraveme

Un laboratoire souhaite geacuterer les meacutedicaments quil conccediloit

Un meacutedicament est deacutecrit par un nom qui permet de lidentifier En effet il nexiste pas deux meacutedicaments avec le mecircme nom Un meacutedicament comporte une description courte en franccedilais ainsi quune description longue en latin On gegravere aussi le conditionnement du meacutedicament cest agrave dire le nombre de pilules par boicircte (qui est un nombre entier)Agrave chaque meacutedicament on associe une liste deacutedieacutee de contre-indications geacuteneacuteralement plusieurs parfois aucune Les contre-indications sont trieacutees par ordre dimportance Lordre est total est strict pour un meacutedicament donc chaque contre-indication possegravede une importance et il nexiste pas deux contre-indications associeacutees au mecircme meacutedicament avec la mecircme importanceTout meacutedicament possegravede au moins un composant souvent plusieurs Un composant est identifieacute par un code unique et possegravede un intituleacute Tout composant peut intervenir dans la fabrication de plusieurs meacutedicaments Il existe des composants qui ne sont pas utiliseacutes pour fabriquer des meacutedicaments et que lon veut quand mecircme geacuterer

Donneacutees de test

Afin de mateacuterialiser notre base de donneacutees nous obtenons les descriptions suivantes

Le a pour description courte et pour description longue Chourix Meacutedicament contre la chute des chouxlaquo raquoVivamus fermentum semper porta Nunc diam velit adipiscing ut tristique vitae sagittis vel odio laquo

Il est conditionneacute en boicircte de 13Maecenas convallis ullamcorper ultricies Curabitur ornare raquoSes contre-indications sont

Le Chourix ne doit jamais ecirctre pris apregraves minuitLe Chourix ne doit jamais ecirctre mis au contact avec de leau

Ses composants sont le et le HG79 SN50Le a pour description courte et pour Tropas Meacutedicament contre les dysfonctionnements intellectuelslaquo raquodescription longue Suspendisse lectus leo consectetur in tempor sit amet placerat quis neque Etiam laquo

Il est conditionneacute en boicircte de 42luctus porttitor lorem sed suscipit est rutrum non raquoSes contre-indications sont

Le Tropas doit ecirctre gardeacute agrave labri de la lumiegravere du soleil

Son unique composant est le HG79Les composants existants sont

HG79 Vif-argent alleacutegeacute

ExercicesII

Exercice Eacutetudiants et UVs (introduction)

31

- - -

- - HG81 Vif-argent alourdi

SN50 Pur eacutetain

Question 1

Question 2

Question 3

2 Exercice Eacutetudiants et UVs (introduction)[20 min]

On dispose du scheacutema UML ci-apregraves qui deacutecrit des eacutetudiants des UV les notes obtenues par les eacutetudiants agrave ces UV et les diplocircmes dorigine de ces eacutetudiants

Eacutetudiants et UVs

key deacutesigne des cleacutes candidates ici toutes les cleacutes ne sont composeacutees que dun seul attributlocal key deacutesigne une cleacute localeun semestre est de la forme PYYYY ou AYYYY (ougrave YYYY deacutesigneacute une anneacutee sur 4 chiffre) exemple A2013 P2014

Rappel Notion de cleacute locale dans classes dassociation (cf p49)

Effectuez le modegravele conceptuel en UML de ce problegraveme

Indices

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans deacutedieacuteeles donneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition

[ ]solution ndeg4 [ ] p56

En mobilisant les regravegles adeacutequates proposer un modegravele logique de donneacutees correspondant en relationnel Le repeacuterage des domaines et des cleacutes est obligatoire

[ ]solution ndeg5 [ ] p57

Dessiner des tableaux remplis avec les donneacutees fournies en exemple afin de montrer que le modegravele fonctionne selon le besoin exprimeacute initialement On pourra mettre le premier mot seulement des descriptions pour gagner du temps

[ ]solution ndeg6 [ ] p57

Exercice Super-heacuteros relationnels I

32

-

-

Question

3 Exercice Super-heacuteros relationnels I[20 min]

La gamme de super-heacuteros GARVEL veut reacutealiser la base de donneacutees de leurs figurines articuleacutees La socieacuteteacute a fait reacutealiser un modegravele UML qui doit servir de point de deacutepart agrave la mise en œuvre

Modegravele UML Figurines GARVEL

Question

4 Exercice Objets Numeacuteriques Libres[30 min]

Lassociation ONL (Objets Numeacuteriques Libres) est une association de promotion des logiciels libres Elle souhaite exposer sur un site Internet une liste de logiciels libres Ce site sera adosseacute agrave une base de donneacutees relationnelle ou relationnel-objet La premiegravere eacutetape de sa deacutemarche est de reacutealiser un modegravele conceptuel repreacutesentant ce quelle souhaite faire

La base de donneacutees permet de geacuterer des applicationsLes applications sont identifieacutees par leur nom (LibreOffice Gimp) et leur version (10 21) et comportent une description courte et une URL Tous les attributs sont obligatoires Chaque application a une URL uniqueLa base de donneacutees permet de geacuterer des librairies

Traduire le scheacutema en modegravele logique relationnel ( )MLD1

On choisira obligatoirement les cleacutes primaires parmi celles neacutecessitant le plus petit nombre de bits possible pour leur codage

[ ]solution ndeg7 [ ] p57

Transformer le modegravele UML en modegravele relationnel (justifier les passages non triviaux en particulier la relation dheacuteritage)

[ ]solution ndeg8 [ ] p58

Exercice Objets Numeacuteriques Libres

33

-

-

-

-

-

-

-

-

-

-

-

-

Les librairies sont des logiciels mais pas des applications Elles ont les mecircmes attributs que les applications (nom version description courte URL) mais les URL ne sont pas neacutecessairement uniques Les applications peuvent deacutependre de librairies ou dautres applications et les librairies peuvent deacutependre dautres librairies (mais pas dune application)La base de donneacutees permet de geacuterer des composantsLes composants sont inteacutegreacutes agrave une application ou librairie Les composants ont un code interne agrave lapplication ou la librairie quil servent une version et une description courte et une URL Le code et le numeacutero de version permettent didentifier localement le composant au sein de la librairie ou de lapplication la description courte et lURL sont optionnellesLa base de donneacutees permet de geacuterer des licencesLes applications librairies et composants sont attacheacutes agrave une ou plusieurs licences identifieacutees par leur nom (GPL MPL) leur version et leur langue et comportant le texte inteacutegral de la licence Les versions des logiciels et licences sont de type numeacutero de licence majeur point numeacutero de licence mineur comme 10 ou 22La base de donneacutees permet de geacuterer des cateacutegoriesChaque logiciel est rangeacute dans une cateacutegorie principale et plusieurs cateacutegories secondaires Exemple de cateacutegories bureautique dessin multimeacutedia physique

Exemple (factice) de donneacutees

Applications

Scenari 41 une chaicircne eacuteditoriale XML httpscenariorg deacutepend de Libreoffice 43 et de ImageMagick 68Libreoffice 43 une suite bureautique WYSIWYG httplibreofficeorg

Librairie

ImageMagick 68 permet de creacuteer de convertir de modifier et dafficher des images http imagemagickorg

Composant

impng 02 est un composant de ImageMagick 68 permet de compresser une image au format PNG

Toutes ces applications librairies et composants sont disponibles sous une licence LGPL 30 et GPL 30 franccedilaisesToutes ces applications et librairies sont rangeacutees dans la cateacutegorie principale document Scenari est rangeacute dans la cateacutegorie secondaire Eacutedition WYSIWYM Libreoffice dans la cateacutegorie secondaire Bureautique ImageMagick dans la cateacutegorie secondaire Multimeacutedia

Question

Reacutealiser un MCD en UML[ ]solution ndeg9 [ ] p58

Devoirs

34

1 Exercice Arbre de scegravene 3D[30 minutes]

On souhaite pouvoir geacuterer les diffeacuterents eacuteleacutements composant des scegravenes 3D dans une base de donneacutees Une scegravene contient des objets qui eux-mecircmes peuvent appartenir agrave plusieurs scegravenes (au moins une) mais il ne peut y avoir plusieurs fois le mecircme objet dans une mecircme scegravene Dans chaque scegravene les objets peuvent ecirctre visibles ou invisibles Les scegravenes et les objets sont identifieacutes de maniegravere unique par un nom Une scegravene peut ecirctre active ou inactive Un objet a comme proprieacuteteacute une position dans lespace repreacutesenteacutee par un vecteur de reacuteels agrave trois composantes (x y z) Les objets sont organiseacutes de maniegravere hieacuterarchique un objet peut ecirctre parent de plusieurs objets et chaque objet peut avoir au plus un parent Des scripts peuvent ecirctre associeacutes agrave un objet ou agrave une scegravene (agrave lun ou agrave lautre mais pas aux deux) Un script est identifieacute de maniegravere unique par un nom et possegravede eacutegalement un attribut permettant de connaicirctre son eacutetat (actif ou inactif) Un personnage est un objet particulier qui possegravede des animations Une animation est relative agrave un personnage et est identifieacutee de maniegravere locale par un nom Agrave un objet est associeacute un maillage et celui-ci peut ecirctre utiliseacute par plusieurs objets Un maillage est identifieacute de maniegravere unique par un nom et est composeacute de plusieurs eacuteleacutements Chaque eacuteleacutement est relatif agrave un maillage et est identifieacute de maniegravere locale par un numeacutero Il existe exactement trois types deacuteleacutement des nœuds des arrecirctes et des faces Une face est deacutelimiteacutee par trois arrecirctes et chaque arrecircte est deacutelimiteacutee par deux nœuds Plusieurs arrecirctes peuvent partager un mecircme nœud et plusieurs faces peuvent partager une mecircme arrecircte Afin deacutevaluer la complexiteacute dune scegravene on souhaite pouvoir calculer le nombre de faces afficheacutees pour une scegravene donneacutee (cest-agrave-dire la somme du nombre de faces du maillage associeacute aux objets visibles de la scegravene) Un maillage possegravede plusieurs mateacuteriaux identifieacutes de maniegravere unique par un nom Un mateacuteriau peut ecirctre associeacute agrave plusieurs maillages Un mateacuteriau est caracteacuteriseacute par une couleur deacutefinie par un vecteur dentiers agrave quatre composantes rouge vert bleu alpha Un mateacuteriau peut posseacuteder une texture et celle-ci peut ecirctre utiliseacutee par plusieurs mateacuteriaux Une texture est identifieacutee de maniegravere unique par un nom et possegravede comme attribut une image

Question 1

Question 2

DevoirsIII

Proposez une clarification de ce problegraveme On pourra reclasser les informations par grande cateacutegorie scegravene objets scripts

Eacutetablissez un modegravele conceptuel en UML de ce problegraveme

Compleacutement Exercices de modeacutelisation suppleacutementaire

35

1 Exercice Appartements agrave louer[30 min]

Une agence dimmobilier (ventes et locations) veut geacuterer son parc dappartements dans une base de donneacutees Chaque appartement possegravede plusieurs piegraveces qui peuvent ecirctre des piegraveces dhabitation des piegraveces de rangement ou des commoditeacutes

Chaque piegravece a une superficie un nombre de prises eacutelectriques et des meubles Pour ces derniers on veut enregistrer le nom du modegravele et le type (chaise lit four etc) Rien nempecircche quune piegravece comporte plusieurs meubles identiques (par exemple plusieurs chaises PIN IQUEA) Les piegraveces dhabitation ont une ou plusieurs fenecirctres les piegraveces de rangement ont une ou plusieurs eacutetagegraveres et une surface de rangement utile totale On veut aussi savoir dans quelles piegraveces de rangement se situent les tableaux eacutelectriques de lappartement Finalement les piegraveces commoditeacutes peuvent ecirctre de trois types cuisine toilette ou salle de bain

Lagence veut aussi enregistrer les portes entre les diffeacuterentes piegraveces Une porte peut ecirctre agrave simple battant double battant coulissante ou une simple ouverture

Chaque appartement a une adresse une superficie totale (qui est la somme des superficies des piegraveces) et un type qui est la lettre T suivie du nombre de piegraveces dhabitation de lappartement Pour un appartement donneacute chaque piegravece est identifieacutee par un numeacutero (commenccedilant au numeacutero 1)

Lagence veut eacutegalement enregistrer le quartier ougrave se trouve lappartement auquel est lieacute un prix par megravetre carreacute Finalement elle veut garder un historique de lhistoire de lappartement les peacuteriodes pour lesquelles il est libre occupeacute en travaux ou vendu

Question

2 Exercice Objectifs[40 min]

Vous prenez la preacutesidence de lassociation Objectifs dont lobjet est daider ses eacutetudiants membres agrave mener des projets dans le cadre de leurs eacutetudes

Compleacutement Exercices de modeacutelisation suppleacutementaire

IV

Reacutealisez le diagramme UML reacutepondant aux besoins de cette agence[ ]solution ndeg10 [ ] p59

Exercice Objectifs

36

- - -

-

-

- - -

Vous constatez en arrivant dans lassociation que personne ne sait exactement quels sont les projets en cours ni qui fait quoi dans les projets Vous ne parvenez pas non plus agrave obtenir une liste exacte des partenaires sur lesquels lassociation peut compter La seule chose sur laquelle vous parvenez agrave mettre la main est un fichier tableur vaguement agrave jour

Vous deacutecidez quil est plus que temps de mettre en place une base de donneacutees afin dassurer la bonne gestion des informations les plus importantes pour lassociation Vous vous attachez pour cela agrave reacutealiser une analyse des besoins

Analysez les documents ci-apregraves

Etat des projets

Eacutetat des projets de lassociation Objectifs

Recueil de besoins

Agrave partir de leacutetude du fonctionnement actuel de lassociation vous relevez les choses importantes agrave geacuterer suivantes

Les membres de lassociation geacuteneacuteralement identifieacutes par leur preacutenomLes projets geacutereacutes par lassociation avec des dates de deacutebut et de fin preacutecises et un chef de projetLe deacutetail des tacircches de chaque projet avec leurs dates de deacutebut et de fin aussi et la liste de tous les membres qui y participentLa liste des partenaires des projets avec leur rocircle preacutecis pour chacun des projets auxquels ils participent

Afin de mieux geacuterer les attributions des projets il serait eacutegalement inteacuteressant de creacuteer une liste des speacutecialiteacutes correspondant agrave ce qui ce fait dans lassociation et daffecter une speacutecialiteacute agrave chaque membre ainsi quune agrave chaque projet pour voir si ce sont bien les membres les mieux adapteacutes qui travaille sur les projets

Recueil de donneacutees

Les discussions avec les anciens membres de lassociation vous apprennent les choses suivantes

Lassociation a termineacute de geacuterer les trois projets Comeacutedie Musicale geacutereacutee par Nathalie sur les trois premiers mois du semestre dautomne 1001 Science en fecircte geacutereacutee par Pierre sur tout le semestre de printemps 1003 et Nuit du picolo geacutereacutee par Julien en novembre 1001Les speacutecialiteacutes recenseacutees pour le moment sont Ville Universiteacute Sport Entreprise Culture InternationalIl faut au moins dix membres agrave lassociation (sinon elle ferme) recruter ceux qui manquentAidez lassociation agrave diviser ses projets en tacircches

Exercice Objectifs

37

- Les partenaires suivants aident ou ont aideacute lassociation la mairie pour la comeacutedie musicale et la science en fecircte qui apporte un soutien financier le ministegravere de la culture qui apporte son soutien logistique agrave la science en fecircte lassociation des commerccedilants de la ville qui apporte son soutien publicitaire agrave la comeacutedie musicale 1664 qui offre ses biegraveres agrave moitieacute prix pour la nuit du Picolo

Question 1

Question 2

Question 3

Afin de preacuteparer une analyse des besoins sommaire listez les donneacutees que vous devrez geacuterer agrave laide des documents et recueils de discussion agrave votre disposition Faites des hypothegraveses lorsque les donneacutees sont incomplegravetes ou incoheacuterentes

[ ]solution ndeg11 [ ] p59

Reacutealiser le MCD en UML et en E-A agrave partir des donneacutees preacutepareacutees dans la question preacuteceacutedente[ ]solution ndeg12 [ ] p60

Reacutealiser le MLD en relationnel en traduisant votre MCD[ ]solution ndeg13 [ ] p61

Contenus annexes

38Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

- - -

gt Attributs

Un attribut est une information eacuteleacutementaire qui caracteacuterise une classe et dont la valeur deacutepend de lobjet instancieacute

Le domaine des valeurs que peut prendre lattribut est fixeacute a prioriUn attribut est typeacute

Il peut prendre plusieurs valeurs distinctes dans son domaineUn attribut peut ecirctre multivalueacute Sa valeur alors est une fonction sur dautres attributs de la classeUn attribut peut ecirctre deacuteriveacute

(ou composite) Il joue alors le rocircle dun groupe dattributs (par Un attribut peut ecirctre composeacuteexemple une adresse peut ecirctre un attribut composeacute des attributs numeacutero type de voie nom de la voie) Cette notion renvoie agrave la notion de variable de type dans les langages de Record

programmation classiques

En UML on preacutefegravere lusage de meacutethodes aux attributs deacuteriveacutes On utilisera toujours des meacutethodes degraves que la valeur de lattribut deacuteriveacute deacutepend dautres attributs exteacuterieurs agrave sa classeEn UML on preacutefegravere lusage de compositions aux attributs composeacutes On utilisera toujours des compositions pour les attributs composeacutes et multivalueacutes

1 attributtype2 attribut_multivalueacute[nbMinValeursnbMaxValeurs]type3 attribut_deacuteriveacutetype4 attribut_composeacute5   - sous-attribut1type6   - sous-attribut2type7   -

Contenus annexes

Deacutefinition Attribut

Attention On utilise peu les attributs deacuteriveacutes et composeacutes en UML

Syntaxe

attributtype

attribut_multivalueacute[nbMinValeursnbMaxValeurs]type

attribut_deacuteriveacutetype

attribut_composeacute

  - sous-attribut1type

  - sous-attribut2type

  -

Contenus annexes

39Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Repreacutesentation dattributs en UML

Dans cet exemple les attributs Nom Preacutenom sont de type lun de 20 caractegraveres et lautre de 10 stringtandis que DateNaissance est de type et Age de type Preacutenom est un attribut multivalueacute ici date integerune personne peut avoir de 1 agrave 3 preacutenoms Age est un attribut deacuteriveacute il est calculeacute par une fonction sur DateNaissance

Meacutethodes (cf p39)

Composition (cf p5)

gt Meacutethodes

Une meacutethode (ou opeacuteration) est une fonction associeacutee agrave une classe dobjet qui permet dagir sur les objets de la classe ou qui permet agrave ces objets de renvoyer des valeurs (calculeacutees en fonction de paramegravetres)

1 methode(paramegravetres)type

Pour la modeacutelisation des bases de donneacutees les meacutethodes sont surtout utiliseacutees pour repreacutesenter des donneacutees calculeacutees (agrave linstar des attributs deacuteriveacutees) ou pour mettre en exergue des fonctions importantes du systegraveme cible Seules les meacutethodes les plus importantes sont repreacutesenteacutees lapproche est moins systeacutematique quen modeacutelisation objet par exemple

Lors de la transformation du modegravele conceptuel UML en modegravele logique relationnel les meacutethodes ne Leur repeacuterage au niveau conceptuel sert donc surtout daide-seront geacuteneacuteralement pas impleacutementeacutees

meacutemoire pour limpleacutementation au niveau applicatif

Exemple La classe Personne

Compleacutement Voir aussi

Deacutefinition Meacutethode

Syntaxe

Remarque Meacutethodes et modeacutelisation de BD

Remarque Meacutethodes relationnel relationnel-objet

methode(paramegravetres)type

Contenus annexes

40Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Au contraire un modegravele logique relationnel-objet permettra limpleacutementation de meacutethodes directement associeacutees agrave des tables Leur repeacuterage au niveau conceptuel est donc encore plus important

Transformation des meacutethodes par des vues (cf p40)

gt Transformation des meacutethodes par des vues

Lorsquune meacutethode est speacutecifieacutee sur un diagramme UML pour une classe C si cette meacutethode est une fonction relationnelle (elle renvoie une unique valeur et elle peut ecirctre reacutesolue par une requecircte SQL) alors on creacutee une vue qui reprend les attributs de la classe C et ajoute des colonnes calculeacutees pour les meacutethodes

Les attributs deacuteriveacutes eacutetant apparenteacutes agrave des meacutethodes ils peuvent eacutegalement ecirctre geacutereacutes par des vues

gt Classe dassociation

On utilise la notation des classes dassociation lorsque lon souhaite ajouter des proprieacuteteacutes agrave une association

Notation dune classe dassociation en UML

On reacuteserve en geacuteneacuteral les classes dassociation aux associations NM

Il est toujours possible de reacuteduire une classe dassociation sur une association 1N en migrant ses attributs sur la classe cocircteacute N et cest en geacuteneacuteral plus lisible ainsi

Compleacutement

Meacutethode

Remarque Attributs deacuteriveacutes

Deacutefinition Classe dassociation

Syntaxe Notation dune classe dassociation en UML

Meacutethode

Contenus annexes

41Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

-

Emplois

Selon le standard UML une classe dassociation est une classe et agrave ce titre elle peut ecirctre mobiliseacutee dans dautres associations ou dans des heacuteritages Nous deacuteconseillons neacuteanmoins ces notations qui ont tendance agrave complexifier la lecture et la transformation du diagramme

Nous conseillons donc de ne jamais associer une classe dassociation

gt Transformation des attributs

Pour chaque attribut eacuteleacutementaire et monovalueacute dune classe

on creacutee un attribut correspondant

Attribut

Classe1(ab)

Pour chaque attribut composite comprenant N sous-attributs dune classe

on creacutee N attributs correspondantsdont les noms sont la concateacutenation du nom de lattribut composite avec celui du sous-attribut

Exemple Exemple de classe dassociation

Conseil

Meacutethode Attributs simples

Meacutethode Attributs composites

Contenus annexes

42Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- - - -

Attribut composeacute

Classe1(ab_b1b_b2)

Pour chaque attribut multivalueacute b dune classe C

on creacutee une nouvelle relation RBqui comprend un attribut monovalueacute correspondant agrave bplus la cleacute de la relation repreacutesentant C la cleacute de RB est la concateacutenation des deux attributs

Attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Dans le cas ougrave le nombre maximum de est fini et petit on peut eacutegalement adopter la transformation b

suivante Classe1(ab1b2b3b4b5b6b7b8b9b10)

Si le nombre dattributs est infini ( ) cest impossible sil est trop grand ce nest pas souhaitableb[1]

On combine les regravegles eacutenonceacutees pour les attributs composeacutes et pour les attributs multivalueacutes

Attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Transformation des compositions (cf p42)

Meacutethode Attributs multivalueacutes

Meacutethode Attributs multivalueacutes (meacutethode alternative)

Meacutethode Attributs composeacutes multivalueacutes

Rappel Voir aussi

Contenus annexes

43Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

gt Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Compleacutement Attributs multivalueacutes et composeacutes

Contenus annexes

44Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

Rappel Voir aussi

Rappel

Meacutethode

Contenus annexes

45Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p48)

gt Transformation des associations 1N

Pour chaque association binaire de type 1N

on ajoute agrave la relation cocircteacute N une cleacute eacutetrangegravere vers la relation cocircteacute 1

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Meacutethode

Contenus annexes

46Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Association 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Contrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p46)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

R1

Compleacutement

Rappel

Meacutethode

Contenus annexes

47Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p47)

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Deacutefinition Projection

Contenus annexes

48Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Deacutefinition Projection

Contenus annexes

49Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Transformation des classes dassociation

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de lassociation NM

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Meacutethode Classe dassociation NM

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt

23

42 Steacutereacuteotype

Un steacutereacuteotype UML est une syntaxe permettant dajouter de la seacutemantique agrave la modeacutelisation des classes Il permet de deacutefinir des afin de regrouper conceptuellement un ensemble de classes (agrave linstar types de classedune classe qui permet de regrouper conceptuellement un ensemble dobjets)

Cest une meacutecanique de meacuteta-modeacutelisation elle permet deacutetendre le meacuteta-modegravele UML cest agrave dire le modegravele conceptuel du modegravele conceptuel

Un meacuteta-modegravele est le modegravele dun modegravele Par exemple le meacuteta-modegravele UML comprend les concepts de classe attribut association cardinaliteacute composition agreacutegation contraintes annotations On mobilise ces concepts (on les instancie) pour exprimer un modegravele particulier suivant le formalisme UML

Les steacutereacuteotypes permettent donc dajouter au meacuteta-modegravele UML standard celui que tout le monde utilise des concepts locaux pour enrichir le langage de modeacutelisation que lon utilise pour reacutealiser des modegraveles

Notation dun steacutereacuteotype en UML

Un steacutereacuteotype speacutecifique enrichit le meacuteta-modegravele UML mais selon une seacutemantique qui est propre agrave celui qui la poseacute non standard donc La conseacutequence est que pour un tiers linterpreacutetation du steacutereacuteotype nest plus normaliseacutee et sera potentiellement plus facilement erroneacutee Il convient donc de ne pas abuser de cette meacutecanique

Deux ou trois steacutereacuteotypes speacutecifiques correctement deacutefinis sont faciles agrave transmettre plusieurs dizaines repreacutesenteraient un nouveau langage complet agrave apprendre pour le lecteur du modegravele

Il existe des steacutereacuteotypes fournit en standard par UML ou communeacutement utiliseacutes par les modeacutelisateurs Lavantage est quil seront compris plus largement au mecircme titre que le reste du meacuteta-modegravele (ils ont une valeur de standard)

43 Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt

Deacutefinition Steacutereacuteotype UML

Deacutefinition Meacuteta-modegravele

Syntaxe

Conseil Steacutereacuteotypes speacutecifiques et steacutereacuteotypes standard

Syntaxe

Type utilisateurs steacutereacuteotype ltltdataTypegtgt

24

Steacutereacuteotype UML permettant dexprimer une eacutenumeacuteration

Exemple de modeacutelisation UML deacutenumeacuteration

44 Type utilisateurs steacutereacuteotype ltltdataTypegtgt

Les types utilisateurs permettent de deacutefinir des types complexes propres en extension des types primaires (entier chaicircne date)

Steacutereacuteotype dataType

Steacutereacuteotype dataType (exemple)

Cette modeacutelisation est eacutequivalente agrave la modeacutelisation des attributs composeacutes directement dans la classe principale Cest une repreacutesentation plus standard en UML

Exemple

Syntaxe

Exemple

Meacutethode Attributs composeacutes

Synthegravese sur la modalisation UML et relationnelle

25

Quelques eacuteleacutements de stylistique UML

26

-

- -

-

-

-

- - -

- - - -

1

2

3

5 Synthegravese sur la modalisation UML et relationnelle51 Quelques eacuteleacutements de stylistique UML

Toutes les associations doivent ecirctre nommeacutees (sauf composition heacuteritage agreacutegation)Ne pas utiliser de nom geacuteneacuterique pour les Classes comme Entiteacute Classe Objet TrucEacuteviter les noms geacuteneacuteriques pour les associations (comme est associeacute agrave)Attention au sens des compositions et agreacutegation le losange est cocircteacute ensemble et noubliez pas les cardinaliteacutes notamment cocircteacute parties

Nutilisez pas le souligneacute ni les en UML pour identifier les cleacutes preacutefeacuterez la contrainte keyPreacutefeacuterez lheacuteritage aux booleacuteens de typage en UMLLes attributs deacuteriveacutes sont reacuteserveacutes aux deacuterivations simples (des attributs de la mecircme classe) si cest plus complexe preacutefeacuterez des meacutethodes (et dans le doute preacutecisez les modes de calcul sur le scheacutema ou dans une note agrave part)Donnez des exemples de contenu lorsque ce nest pas eacutevident (lorsque le couple nom dattribut et type ne permet pas de faccedilon eacutevidente de comprendre de quoi lon parle)Inutile de deacuteclarer le type booleacuteen en UML utilisez-le directement comme un type de donneacutees connu

Si tous vos heacuteritages sont exclusifs notez-le agrave part pour alleacuteger votre scheacutema (et eacuteviter labondance de XOR)

52 Attention aux cleacutes artificielles

en UML on ne pose jamais de cleacutes artificiellesen relationnel on pose rarement des cleacute artificielles sauf dans le cas de cleacutes eacutetrangegraveres vraiment trop compliqueacuteesen SQL on peut poser des cleacutes artificielles si on a une bonne raison (ce nest donc pas systeacutematique et cest agrave justifier)

On najoutera pas de cleacute artificielle en UML au moment de la modeacutelisation conceptuelle des donneacutees

Formellement en UML la notion de cleacute nexiste pas (contrairement agrave l ) elle est ajouteacutee par les E-A

pratiquants des BD

Logiquement on a pas besoin de cette notion en UML les cleacutes artificielles servent en relationnel et dans certains cas uniquementPratiquement cela peut conduire agrave des situations absurdes (comme enlever au niveau logique des cleacutes artificielles ajouteacutees au niveau conceptuel)

Attention

Conseil

Compleacutement

Fondamental

Cleacutes artificielles et niveau conceptuel

Bibliographie commenteacutee sur la modeacutelisation UML

27

-

-

- -

-

- -

-

-

3

4

5

si on fait du non-relationnel on ne doit pas ajouter de cleacutes artificielles dans certains cas (limbrication typiquement) cela arrive mecircme en relationnel avec la transformation de lheacuteritage (dans certains cas toujours)

Meacutethodologiquement il faut se concentrer agrave chaque phase sur ce qui est important donc au moment du MCD on traduit les besoins on repegravere les contraintes explicites (cleacute uniciteacute non nulliteacute) sans se preacuteoccuper de ce qui sera rendu neacutecessaire par la suite par la modeacutelisation relationnelle (les cleacutes eacutetrangegraveres par exemple) ou limpleacutementation (loptimisation par exemple) Agrave chaque jour suffit sa peine Peacutedagogiquement enfin les deacutebutants ont tendance (agrave cause des environnements de conception graphique comme phpMyAdmin notamment) agrave systeacutematiser les cleacutes artificielles en SQL (on pourrait en discuter) mais eacutegalement agrave ne pas faire le travail de recherche des cleacutes naturelles (au niveau relationnel notamment ce qui est une faute de modeacutelisation) Donc au plus tard on fait intervenir les cleacutes artificielles au plus on a une chance de penser aux cleacutes naturelles

Soit le modegravele relationnel suivant

1 Etu (id numEtu) avec numEtu cleacute 2 UV (id codeUv) avec codeUv cleacute3 Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

La question qui permet dafficher la liste des eacutetudiants (numEtu) avec leurs UVs (codeUv) neacutecessite une jointure des cleacutes artificielles Un modegravele sans ces cleacutes artificielles aurait eacuteteacute plus performant pour agrave causereacutepondre agrave cette question puisque toutes les informations se trouvent dans la relation Inscriptions

1 Etu (numEtu) 2 UV (codeUv) 3 Inscriptions (uv=gtUV etu=gtEtu)

Ne soyez pas systeacutematiqueIl est en effet freacutequent dans un projet reacuteel dadopter des cleacutes artificielles presque systeacutematiquement vous pourrez le faire en connaissance de cause quand vous aurez bien compris pourquoi cest inteacuteressant et quand ccedila ne lest pasLes cleacutes artificielles sont inteacuteressantes pour autre chose que les performances (leacutevolutiviteacute par exemple choisissez-les quand vous savez pourquoi)Les cleacutes artificielles ne dispensent pas de rechercher les cleacutes naturelles Les cleacutes artificielles ne sont pas la seule faccedilon doptimiser une base de donneacutees (indexation deacutenormalisation)

53 Bibliographie commenteacutee sur la modeacutelisation UML

Il existe de nombreux outils de modeacutelisation UML On pourra citer

logiciel Open Source et multi-plateformes facile dusage (qui marche neacuteanmoins mieux sur Linux Dia

que sur Windows)

(version gratuite)Objecteering

Cleacutes artificielles et optimisation est-il toujours plus performant dutiliser des cleacutes artificielles

Conseil

Compleacutement Outils de modeacutelisation UML

Etu (id numEtu) avec numEtu cleacute

UV (id codeUv) avec codeUv cleacute

Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

Etu (numEtu)

UV (codeUv)

Inscriptions (uv=gtUV etu=gtEtu)

Bibliographie commenteacutee sur la modeacutelisation UML

28

- - - - - -

- - - - - -

Agrave voir eacutegalement en Open Source ou (non testeacute par lauteur)ArgoUML EclipseUML

UML2 en action

Pour un aperccedilu plus deacutetailleacute des possibiliteacutes dexpression du diagramme de classe UML lire le chapitre 7 Deacuteveloppement du modegravele statique (pages 133 agrave 163)

On pourra notamment y trouver

Lassociation dagreacutegationLes proprieacuteteacutes dassociationLexpression de rocircles dans les associationsLes attributs de classeLes qualificatifsLes opeacuterations (ou meacutethodes)

Le chapitre donne de plus des conseils meacutethodologiques pour la conception (voir en particulier la synthegravese page 163)

On pourra eacutegalement y trouver

Des principes de choix de modeacutelisation entre attributs et classes et sur la segmentation des classesDes principes de seacutelection des attributs (redondance avec les associations avec les classes etc)Des principes de seacutelection des associationsDes principes de choix de cardinaliteacute (notamment pour la gestion dhistorisation)Des principes de seacutelection des relations de geacuteneacuteralisation (heacuteritage)Des principes dintroduction de meacutetaclasses (type)s

U M L e n Franccedilais

Une tregraves bonne reacutefeacuterence en ligne sur la modeacutelisation UML avec des cours des liens vers la norme etc

Le contenu deacutepasse tregraves largement lusage dUML pour la modeacutelisation de BD (et ne fait dailleurs pas de reacutefeacuterence preacutecise agrave ce sous-ensemble particulier)

On pourra consulter en particulier le chapitre sur les diagrammes de classe httpumlfreefrcoursi-p14html

UML en 5 eacutetapes

On consultera en particulier le tutoriel sur les diagrammes de classe httpdeveloppeurjournaldunetcomtutorielcpt010607cpt_umlintroshtml

Cinq petits conseils pour un scheacutema UML efficace

Compleacutement Modeacutelisation UML

Compleacutement Reacutefeacuterence UML en ligne

Compleacutement Tutoriel sur la modeacutelisation UML

Compleacutement Conseils

Synthegravese Les diagrammes de modeacutelisation conceptuelle

29

-

-

- -

-

- -

-

-

- -

-

- - - -

-

-

(chapitre 3)UML2 par la pratique

Des explications exemples et eacutetudes de cas

54 Synthegravese Les diagrammes de modeacutelisation conceptuelle

Un modegravele conceptuel peut ecirctre repreacutesenteacute sous forme de diagramme E-A ou sous forme de diagramme de classe UML

Classe ou Entiteacute

Attribut ou Proprieacuteteacute

TypeacuteMulti-valueacuteComposeacuteDeacuteriveacute

Meacutethode

ParamegravetresValeur de retour

Association

Association

VerbeCardinaliteacute

Heacuteritage

Heacuteritage dattributsHeacuteritage de meacutethodes

Composition (ou entiteacute faible)

Cardinaliteacute

Compleacutement Pratique

Exercices

30

-

-

-

-

-

-

-

1 2

1

1 Exercice Lab III[20 min]

Description du problegraveme

Un laboratoire souhaite geacuterer les meacutedicaments quil conccediloit

Un meacutedicament est deacutecrit par un nom qui permet de lidentifier En effet il nexiste pas deux meacutedicaments avec le mecircme nom Un meacutedicament comporte une description courte en franccedilais ainsi quune description longue en latin On gegravere aussi le conditionnement du meacutedicament cest agrave dire le nombre de pilules par boicircte (qui est un nombre entier)Agrave chaque meacutedicament on associe une liste deacutedieacutee de contre-indications geacuteneacuteralement plusieurs parfois aucune Les contre-indications sont trieacutees par ordre dimportance Lordre est total est strict pour un meacutedicament donc chaque contre-indication possegravede une importance et il nexiste pas deux contre-indications associeacutees au mecircme meacutedicament avec la mecircme importanceTout meacutedicament possegravede au moins un composant souvent plusieurs Un composant est identifieacute par un code unique et possegravede un intituleacute Tout composant peut intervenir dans la fabrication de plusieurs meacutedicaments Il existe des composants qui ne sont pas utiliseacutes pour fabriquer des meacutedicaments et que lon veut quand mecircme geacuterer

Donneacutees de test

Afin de mateacuterialiser notre base de donneacutees nous obtenons les descriptions suivantes

Le a pour description courte et pour description longue Chourix Meacutedicament contre la chute des chouxlaquo raquoVivamus fermentum semper porta Nunc diam velit adipiscing ut tristique vitae sagittis vel odio laquo

Il est conditionneacute en boicircte de 13Maecenas convallis ullamcorper ultricies Curabitur ornare raquoSes contre-indications sont

Le Chourix ne doit jamais ecirctre pris apregraves minuitLe Chourix ne doit jamais ecirctre mis au contact avec de leau

Ses composants sont le et le HG79 SN50Le a pour description courte et pour Tropas Meacutedicament contre les dysfonctionnements intellectuelslaquo raquodescription longue Suspendisse lectus leo consectetur in tempor sit amet placerat quis neque Etiam laquo

Il est conditionneacute en boicircte de 42luctus porttitor lorem sed suscipit est rutrum non raquoSes contre-indications sont

Le Tropas doit ecirctre gardeacute agrave labri de la lumiegravere du soleil

Son unique composant est le HG79Les composants existants sont

HG79 Vif-argent alleacutegeacute

ExercicesII

Exercice Eacutetudiants et UVs (introduction)

31

- - -

- - HG81 Vif-argent alourdi

SN50 Pur eacutetain

Question 1

Question 2

Question 3

2 Exercice Eacutetudiants et UVs (introduction)[20 min]

On dispose du scheacutema UML ci-apregraves qui deacutecrit des eacutetudiants des UV les notes obtenues par les eacutetudiants agrave ces UV et les diplocircmes dorigine de ces eacutetudiants

Eacutetudiants et UVs

key deacutesigne des cleacutes candidates ici toutes les cleacutes ne sont composeacutees que dun seul attributlocal key deacutesigne une cleacute localeun semestre est de la forme PYYYY ou AYYYY (ougrave YYYY deacutesigneacute une anneacutee sur 4 chiffre) exemple A2013 P2014

Rappel Notion de cleacute locale dans classes dassociation (cf p49)

Effectuez le modegravele conceptuel en UML de ce problegraveme

Indices

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans deacutedieacuteeles donneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition

[ ]solution ndeg4 [ ] p56

En mobilisant les regravegles adeacutequates proposer un modegravele logique de donneacutees correspondant en relationnel Le repeacuterage des domaines et des cleacutes est obligatoire

[ ]solution ndeg5 [ ] p57

Dessiner des tableaux remplis avec les donneacutees fournies en exemple afin de montrer que le modegravele fonctionne selon le besoin exprimeacute initialement On pourra mettre le premier mot seulement des descriptions pour gagner du temps

[ ]solution ndeg6 [ ] p57

Exercice Super-heacuteros relationnels I

32

-

-

Question

3 Exercice Super-heacuteros relationnels I[20 min]

La gamme de super-heacuteros GARVEL veut reacutealiser la base de donneacutees de leurs figurines articuleacutees La socieacuteteacute a fait reacutealiser un modegravele UML qui doit servir de point de deacutepart agrave la mise en œuvre

Modegravele UML Figurines GARVEL

Question

4 Exercice Objets Numeacuteriques Libres[30 min]

Lassociation ONL (Objets Numeacuteriques Libres) est une association de promotion des logiciels libres Elle souhaite exposer sur un site Internet une liste de logiciels libres Ce site sera adosseacute agrave une base de donneacutees relationnelle ou relationnel-objet La premiegravere eacutetape de sa deacutemarche est de reacutealiser un modegravele conceptuel repreacutesentant ce quelle souhaite faire

La base de donneacutees permet de geacuterer des applicationsLes applications sont identifieacutees par leur nom (LibreOffice Gimp) et leur version (10 21) et comportent une description courte et une URL Tous les attributs sont obligatoires Chaque application a une URL uniqueLa base de donneacutees permet de geacuterer des librairies

Traduire le scheacutema en modegravele logique relationnel ( )MLD1

On choisira obligatoirement les cleacutes primaires parmi celles neacutecessitant le plus petit nombre de bits possible pour leur codage

[ ]solution ndeg7 [ ] p57

Transformer le modegravele UML en modegravele relationnel (justifier les passages non triviaux en particulier la relation dheacuteritage)

[ ]solution ndeg8 [ ] p58

Exercice Objets Numeacuteriques Libres

33

-

-

-

-

-

-

-

-

-

-

-

-

Les librairies sont des logiciels mais pas des applications Elles ont les mecircmes attributs que les applications (nom version description courte URL) mais les URL ne sont pas neacutecessairement uniques Les applications peuvent deacutependre de librairies ou dautres applications et les librairies peuvent deacutependre dautres librairies (mais pas dune application)La base de donneacutees permet de geacuterer des composantsLes composants sont inteacutegreacutes agrave une application ou librairie Les composants ont un code interne agrave lapplication ou la librairie quil servent une version et une description courte et une URL Le code et le numeacutero de version permettent didentifier localement le composant au sein de la librairie ou de lapplication la description courte et lURL sont optionnellesLa base de donneacutees permet de geacuterer des licencesLes applications librairies et composants sont attacheacutes agrave une ou plusieurs licences identifieacutees par leur nom (GPL MPL) leur version et leur langue et comportant le texte inteacutegral de la licence Les versions des logiciels et licences sont de type numeacutero de licence majeur point numeacutero de licence mineur comme 10 ou 22La base de donneacutees permet de geacuterer des cateacutegoriesChaque logiciel est rangeacute dans une cateacutegorie principale et plusieurs cateacutegories secondaires Exemple de cateacutegories bureautique dessin multimeacutedia physique

Exemple (factice) de donneacutees

Applications

Scenari 41 une chaicircne eacuteditoriale XML httpscenariorg deacutepend de Libreoffice 43 et de ImageMagick 68Libreoffice 43 une suite bureautique WYSIWYG httplibreofficeorg

Librairie

ImageMagick 68 permet de creacuteer de convertir de modifier et dafficher des images http imagemagickorg

Composant

impng 02 est un composant de ImageMagick 68 permet de compresser une image au format PNG

Toutes ces applications librairies et composants sont disponibles sous une licence LGPL 30 et GPL 30 franccedilaisesToutes ces applications et librairies sont rangeacutees dans la cateacutegorie principale document Scenari est rangeacute dans la cateacutegorie secondaire Eacutedition WYSIWYM Libreoffice dans la cateacutegorie secondaire Bureautique ImageMagick dans la cateacutegorie secondaire Multimeacutedia

Question

Reacutealiser un MCD en UML[ ]solution ndeg9 [ ] p58

Devoirs

34

1 Exercice Arbre de scegravene 3D[30 minutes]

On souhaite pouvoir geacuterer les diffeacuterents eacuteleacutements composant des scegravenes 3D dans une base de donneacutees Une scegravene contient des objets qui eux-mecircmes peuvent appartenir agrave plusieurs scegravenes (au moins une) mais il ne peut y avoir plusieurs fois le mecircme objet dans une mecircme scegravene Dans chaque scegravene les objets peuvent ecirctre visibles ou invisibles Les scegravenes et les objets sont identifieacutes de maniegravere unique par un nom Une scegravene peut ecirctre active ou inactive Un objet a comme proprieacuteteacute une position dans lespace repreacutesenteacutee par un vecteur de reacuteels agrave trois composantes (x y z) Les objets sont organiseacutes de maniegravere hieacuterarchique un objet peut ecirctre parent de plusieurs objets et chaque objet peut avoir au plus un parent Des scripts peuvent ecirctre associeacutes agrave un objet ou agrave une scegravene (agrave lun ou agrave lautre mais pas aux deux) Un script est identifieacute de maniegravere unique par un nom et possegravede eacutegalement un attribut permettant de connaicirctre son eacutetat (actif ou inactif) Un personnage est un objet particulier qui possegravede des animations Une animation est relative agrave un personnage et est identifieacutee de maniegravere locale par un nom Agrave un objet est associeacute un maillage et celui-ci peut ecirctre utiliseacute par plusieurs objets Un maillage est identifieacute de maniegravere unique par un nom et est composeacute de plusieurs eacuteleacutements Chaque eacuteleacutement est relatif agrave un maillage et est identifieacute de maniegravere locale par un numeacutero Il existe exactement trois types deacuteleacutement des nœuds des arrecirctes et des faces Une face est deacutelimiteacutee par trois arrecirctes et chaque arrecircte est deacutelimiteacutee par deux nœuds Plusieurs arrecirctes peuvent partager un mecircme nœud et plusieurs faces peuvent partager une mecircme arrecircte Afin deacutevaluer la complexiteacute dune scegravene on souhaite pouvoir calculer le nombre de faces afficheacutees pour une scegravene donneacutee (cest-agrave-dire la somme du nombre de faces du maillage associeacute aux objets visibles de la scegravene) Un maillage possegravede plusieurs mateacuteriaux identifieacutes de maniegravere unique par un nom Un mateacuteriau peut ecirctre associeacute agrave plusieurs maillages Un mateacuteriau est caracteacuteriseacute par une couleur deacutefinie par un vecteur dentiers agrave quatre composantes rouge vert bleu alpha Un mateacuteriau peut posseacuteder une texture et celle-ci peut ecirctre utiliseacutee par plusieurs mateacuteriaux Une texture est identifieacutee de maniegravere unique par un nom et possegravede comme attribut une image

Question 1

Question 2

DevoirsIII

Proposez une clarification de ce problegraveme On pourra reclasser les informations par grande cateacutegorie scegravene objets scripts

Eacutetablissez un modegravele conceptuel en UML de ce problegraveme

Compleacutement Exercices de modeacutelisation suppleacutementaire

35

1 Exercice Appartements agrave louer[30 min]

Une agence dimmobilier (ventes et locations) veut geacuterer son parc dappartements dans une base de donneacutees Chaque appartement possegravede plusieurs piegraveces qui peuvent ecirctre des piegraveces dhabitation des piegraveces de rangement ou des commoditeacutes

Chaque piegravece a une superficie un nombre de prises eacutelectriques et des meubles Pour ces derniers on veut enregistrer le nom du modegravele et le type (chaise lit four etc) Rien nempecircche quune piegravece comporte plusieurs meubles identiques (par exemple plusieurs chaises PIN IQUEA) Les piegraveces dhabitation ont une ou plusieurs fenecirctres les piegraveces de rangement ont une ou plusieurs eacutetagegraveres et une surface de rangement utile totale On veut aussi savoir dans quelles piegraveces de rangement se situent les tableaux eacutelectriques de lappartement Finalement les piegraveces commoditeacutes peuvent ecirctre de trois types cuisine toilette ou salle de bain

Lagence veut aussi enregistrer les portes entre les diffeacuterentes piegraveces Une porte peut ecirctre agrave simple battant double battant coulissante ou une simple ouverture

Chaque appartement a une adresse une superficie totale (qui est la somme des superficies des piegraveces) et un type qui est la lettre T suivie du nombre de piegraveces dhabitation de lappartement Pour un appartement donneacute chaque piegravece est identifieacutee par un numeacutero (commenccedilant au numeacutero 1)

Lagence veut eacutegalement enregistrer le quartier ougrave se trouve lappartement auquel est lieacute un prix par megravetre carreacute Finalement elle veut garder un historique de lhistoire de lappartement les peacuteriodes pour lesquelles il est libre occupeacute en travaux ou vendu

Question

2 Exercice Objectifs[40 min]

Vous prenez la preacutesidence de lassociation Objectifs dont lobjet est daider ses eacutetudiants membres agrave mener des projets dans le cadre de leurs eacutetudes

Compleacutement Exercices de modeacutelisation suppleacutementaire

IV

Reacutealisez le diagramme UML reacutepondant aux besoins de cette agence[ ]solution ndeg10 [ ] p59

Exercice Objectifs

36

- - -

-

-

- - -

Vous constatez en arrivant dans lassociation que personne ne sait exactement quels sont les projets en cours ni qui fait quoi dans les projets Vous ne parvenez pas non plus agrave obtenir une liste exacte des partenaires sur lesquels lassociation peut compter La seule chose sur laquelle vous parvenez agrave mettre la main est un fichier tableur vaguement agrave jour

Vous deacutecidez quil est plus que temps de mettre en place une base de donneacutees afin dassurer la bonne gestion des informations les plus importantes pour lassociation Vous vous attachez pour cela agrave reacutealiser une analyse des besoins

Analysez les documents ci-apregraves

Etat des projets

Eacutetat des projets de lassociation Objectifs

Recueil de besoins

Agrave partir de leacutetude du fonctionnement actuel de lassociation vous relevez les choses importantes agrave geacuterer suivantes

Les membres de lassociation geacuteneacuteralement identifieacutes par leur preacutenomLes projets geacutereacutes par lassociation avec des dates de deacutebut et de fin preacutecises et un chef de projetLe deacutetail des tacircches de chaque projet avec leurs dates de deacutebut et de fin aussi et la liste de tous les membres qui y participentLa liste des partenaires des projets avec leur rocircle preacutecis pour chacun des projets auxquels ils participent

Afin de mieux geacuterer les attributions des projets il serait eacutegalement inteacuteressant de creacuteer une liste des speacutecialiteacutes correspondant agrave ce qui ce fait dans lassociation et daffecter une speacutecialiteacute agrave chaque membre ainsi quune agrave chaque projet pour voir si ce sont bien les membres les mieux adapteacutes qui travaille sur les projets

Recueil de donneacutees

Les discussions avec les anciens membres de lassociation vous apprennent les choses suivantes

Lassociation a termineacute de geacuterer les trois projets Comeacutedie Musicale geacutereacutee par Nathalie sur les trois premiers mois du semestre dautomne 1001 Science en fecircte geacutereacutee par Pierre sur tout le semestre de printemps 1003 et Nuit du picolo geacutereacutee par Julien en novembre 1001Les speacutecialiteacutes recenseacutees pour le moment sont Ville Universiteacute Sport Entreprise Culture InternationalIl faut au moins dix membres agrave lassociation (sinon elle ferme) recruter ceux qui manquentAidez lassociation agrave diviser ses projets en tacircches

Exercice Objectifs

37

- Les partenaires suivants aident ou ont aideacute lassociation la mairie pour la comeacutedie musicale et la science en fecircte qui apporte un soutien financier le ministegravere de la culture qui apporte son soutien logistique agrave la science en fecircte lassociation des commerccedilants de la ville qui apporte son soutien publicitaire agrave la comeacutedie musicale 1664 qui offre ses biegraveres agrave moitieacute prix pour la nuit du Picolo

Question 1

Question 2

Question 3

Afin de preacuteparer une analyse des besoins sommaire listez les donneacutees que vous devrez geacuterer agrave laide des documents et recueils de discussion agrave votre disposition Faites des hypothegraveses lorsque les donneacutees sont incomplegravetes ou incoheacuterentes

[ ]solution ndeg11 [ ] p59

Reacutealiser le MCD en UML et en E-A agrave partir des donneacutees preacutepareacutees dans la question preacuteceacutedente[ ]solution ndeg12 [ ] p60

Reacutealiser le MLD en relationnel en traduisant votre MCD[ ]solution ndeg13 [ ] p61

Contenus annexes

38Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

- - -

gt Attributs

Un attribut est une information eacuteleacutementaire qui caracteacuterise une classe et dont la valeur deacutepend de lobjet instancieacute

Le domaine des valeurs que peut prendre lattribut est fixeacute a prioriUn attribut est typeacute

Il peut prendre plusieurs valeurs distinctes dans son domaineUn attribut peut ecirctre multivalueacute Sa valeur alors est une fonction sur dautres attributs de la classeUn attribut peut ecirctre deacuteriveacute

(ou composite) Il joue alors le rocircle dun groupe dattributs (par Un attribut peut ecirctre composeacuteexemple une adresse peut ecirctre un attribut composeacute des attributs numeacutero type de voie nom de la voie) Cette notion renvoie agrave la notion de variable de type dans les langages de Record

programmation classiques

En UML on preacutefegravere lusage de meacutethodes aux attributs deacuteriveacutes On utilisera toujours des meacutethodes degraves que la valeur de lattribut deacuteriveacute deacutepend dautres attributs exteacuterieurs agrave sa classeEn UML on preacutefegravere lusage de compositions aux attributs composeacutes On utilisera toujours des compositions pour les attributs composeacutes et multivalueacutes

1 attributtype2 attribut_multivalueacute[nbMinValeursnbMaxValeurs]type3 attribut_deacuteriveacutetype4 attribut_composeacute5   - sous-attribut1type6   - sous-attribut2type7   -

Contenus annexes

Deacutefinition Attribut

Attention On utilise peu les attributs deacuteriveacutes et composeacutes en UML

Syntaxe

attributtype

attribut_multivalueacute[nbMinValeursnbMaxValeurs]type

attribut_deacuteriveacutetype

attribut_composeacute

  - sous-attribut1type

  - sous-attribut2type

  -

Contenus annexes

39Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Repreacutesentation dattributs en UML

Dans cet exemple les attributs Nom Preacutenom sont de type lun de 20 caractegraveres et lautre de 10 stringtandis que DateNaissance est de type et Age de type Preacutenom est un attribut multivalueacute ici date integerune personne peut avoir de 1 agrave 3 preacutenoms Age est un attribut deacuteriveacute il est calculeacute par une fonction sur DateNaissance

Meacutethodes (cf p39)

Composition (cf p5)

gt Meacutethodes

Une meacutethode (ou opeacuteration) est une fonction associeacutee agrave une classe dobjet qui permet dagir sur les objets de la classe ou qui permet agrave ces objets de renvoyer des valeurs (calculeacutees en fonction de paramegravetres)

1 methode(paramegravetres)type

Pour la modeacutelisation des bases de donneacutees les meacutethodes sont surtout utiliseacutees pour repreacutesenter des donneacutees calculeacutees (agrave linstar des attributs deacuteriveacutees) ou pour mettre en exergue des fonctions importantes du systegraveme cible Seules les meacutethodes les plus importantes sont repreacutesenteacutees lapproche est moins systeacutematique quen modeacutelisation objet par exemple

Lors de la transformation du modegravele conceptuel UML en modegravele logique relationnel les meacutethodes ne Leur repeacuterage au niveau conceptuel sert donc surtout daide-seront geacuteneacuteralement pas impleacutementeacutees

meacutemoire pour limpleacutementation au niveau applicatif

Exemple La classe Personne

Compleacutement Voir aussi

Deacutefinition Meacutethode

Syntaxe

Remarque Meacutethodes et modeacutelisation de BD

Remarque Meacutethodes relationnel relationnel-objet

methode(paramegravetres)type

Contenus annexes

40Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Au contraire un modegravele logique relationnel-objet permettra limpleacutementation de meacutethodes directement associeacutees agrave des tables Leur repeacuterage au niveau conceptuel est donc encore plus important

Transformation des meacutethodes par des vues (cf p40)

gt Transformation des meacutethodes par des vues

Lorsquune meacutethode est speacutecifieacutee sur un diagramme UML pour une classe C si cette meacutethode est une fonction relationnelle (elle renvoie une unique valeur et elle peut ecirctre reacutesolue par une requecircte SQL) alors on creacutee une vue qui reprend les attributs de la classe C et ajoute des colonnes calculeacutees pour les meacutethodes

Les attributs deacuteriveacutes eacutetant apparenteacutes agrave des meacutethodes ils peuvent eacutegalement ecirctre geacutereacutes par des vues

gt Classe dassociation

On utilise la notation des classes dassociation lorsque lon souhaite ajouter des proprieacuteteacutes agrave une association

Notation dune classe dassociation en UML

On reacuteserve en geacuteneacuteral les classes dassociation aux associations NM

Il est toujours possible de reacuteduire une classe dassociation sur une association 1N en migrant ses attributs sur la classe cocircteacute N et cest en geacuteneacuteral plus lisible ainsi

Compleacutement

Meacutethode

Remarque Attributs deacuteriveacutes

Deacutefinition Classe dassociation

Syntaxe Notation dune classe dassociation en UML

Meacutethode

Contenus annexes

41Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

-

Emplois

Selon le standard UML une classe dassociation est une classe et agrave ce titre elle peut ecirctre mobiliseacutee dans dautres associations ou dans des heacuteritages Nous deacuteconseillons neacuteanmoins ces notations qui ont tendance agrave complexifier la lecture et la transformation du diagramme

Nous conseillons donc de ne jamais associer une classe dassociation

gt Transformation des attributs

Pour chaque attribut eacuteleacutementaire et monovalueacute dune classe

on creacutee un attribut correspondant

Attribut

Classe1(ab)

Pour chaque attribut composite comprenant N sous-attributs dune classe

on creacutee N attributs correspondantsdont les noms sont la concateacutenation du nom de lattribut composite avec celui du sous-attribut

Exemple Exemple de classe dassociation

Conseil

Meacutethode Attributs simples

Meacutethode Attributs composites

Contenus annexes

42Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- - - -

Attribut composeacute

Classe1(ab_b1b_b2)

Pour chaque attribut multivalueacute b dune classe C

on creacutee une nouvelle relation RBqui comprend un attribut monovalueacute correspondant agrave bplus la cleacute de la relation repreacutesentant C la cleacute de RB est la concateacutenation des deux attributs

Attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Dans le cas ougrave le nombre maximum de est fini et petit on peut eacutegalement adopter la transformation b

suivante Classe1(ab1b2b3b4b5b6b7b8b9b10)

Si le nombre dattributs est infini ( ) cest impossible sil est trop grand ce nest pas souhaitableb[1]

On combine les regravegles eacutenonceacutees pour les attributs composeacutes et pour les attributs multivalueacutes

Attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Transformation des compositions (cf p42)

Meacutethode Attributs multivalueacutes

Meacutethode Attributs multivalueacutes (meacutethode alternative)

Meacutethode Attributs composeacutes multivalueacutes

Rappel Voir aussi

Contenus annexes

43Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

gt Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Compleacutement Attributs multivalueacutes et composeacutes

Contenus annexes

44Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

Rappel Voir aussi

Rappel

Meacutethode

Contenus annexes

45Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p48)

gt Transformation des associations 1N

Pour chaque association binaire de type 1N

on ajoute agrave la relation cocircteacute N une cleacute eacutetrangegravere vers la relation cocircteacute 1

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Meacutethode

Contenus annexes

46Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Association 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Contrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p46)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

R1

Compleacutement

Rappel

Meacutethode

Contenus annexes

47Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p47)

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Deacutefinition Projection

Contenus annexes

48Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Deacutefinition Projection

Contenus annexes

49Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Transformation des classes dassociation

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de lassociation NM

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Meacutethode Classe dassociation NM

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Type utilisateurs steacutereacuteotype ltltdataTypegtgt

24

Steacutereacuteotype UML permettant dexprimer une eacutenumeacuteration

Exemple de modeacutelisation UML deacutenumeacuteration

44 Type utilisateurs steacutereacuteotype ltltdataTypegtgt

Les types utilisateurs permettent de deacutefinir des types complexes propres en extension des types primaires (entier chaicircne date)

Steacutereacuteotype dataType

Steacutereacuteotype dataType (exemple)

Cette modeacutelisation est eacutequivalente agrave la modeacutelisation des attributs composeacutes directement dans la classe principale Cest une repreacutesentation plus standard en UML

Exemple

Syntaxe

Exemple

Meacutethode Attributs composeacutes

Synthegravese sur la modalisation UML et relationnelle

25

Quelques eacuteleacutements de stylistique UML

26

-

- -

-

-

-

- - -

- - - -

1

2

3

5 Synthegravese sur la modalisation UML et relationnelle51 Quelques eacuteleacutements de stylistique UML

Toutes les associations doivent ecirctre nommeacutees (sauf composition heacuteritage agreacutegation)Ne pas utiliser de nom geacuteneacuterique pour les Classes comme Entiteacute Classe Objet TrucEacuteviter les noms geacuteneacuteriques pour les associations (comme est associeacute agrave)Attention au sens des compositions et agreacutegation le losange est cocircteacute ensemble et noubliez pas les cardinaliteacutes notamment cocircteacute parties

Nutilisez pas le souligneacute ni les en UML pour identifier les cleacutes preacutefeacuterez la contrainte keyPreacutefeacuterez lheacuteritage aux booleacuteens de typage en UMLLes attributs deacuteriveacutes sont reacuteserveacutes aux deacuterivations simples (des attributs de la mecircme classe) si cest plus complexe preacutefeacuterez des meacutethodes (et dans le doute preacutecisez les modes de calcul sur le scheacutema ou dans une note agrave part)Donnez des exemples de contenu lorsque ce nest pas eacutevident (lorsque le couple nom dattribut et type ne permet pas de faccedilon eacutevidente de comprendre de quoi lon parle)Inutile de deacuteclarer le type booleacuteen en UML utilisez-le directement comme un type de donneacutees connu

Si tous vos heacuteritages sont exclusifs notez-le agrave part pour alleacuteger votre scheacutema (et eacuteviter labondance de XOR)

52 Attention aux cleacutes artificielles

en UML on ne pose jamais de cleacutes artificiellesen relationnel on pose rarement des cleacute artificielles sauf dans le cas de cleacutes eacutetrangegraveres vraiment trop compliqueacuteesen SQL on peut poser des cleacutes artificielles si on a une bonne raison (ce nest donc pas systeacutematique et cest agrave justifier)

On najoutera pas de cleacute artificielle en UML au moment de la modeacutelisation conceptuelle des donneacutees

Formellement en UML la notion de cleacute nexiste pas (contrairement agrave l ) elle est ajouteacutee par les E-A

pratiquants des BD

Logiquement on a pas besoin de cette notion en UML les cleacutes artificielles servent en relationnel et dans certains cas uniquementPratiquement cela peut conduire agrave des situations absurdes (comme enlever au niveau logique des cleacutes artificielles ajouteacutees au niveau conceptuel)

Attention

Conseil

Compleacutement

Fondamental

Cleacutes artificielles et niveau conceptuel

Bibliographie commenteacutee sur la modeacutelisation UML

27

-

-

- -

-

- -

-

-

3

4

5

si on fait du non-relationnel on ne doit pas ajouter de cleacutes artificielles dans certains cas (limbrication typiquement) cela arrive mecircme en relationnel avec la transformation de lheacuteritage (dans certains cas toujours)

Meacutethodologiquement il faut se concentrer agrave chaque phase sur ce qui est important donc au moment du MCD on traduit les besoins on repegravere les contraintes explicites (cleacute uniciteacute non nulliteacute) sans se preacuteoccuper de ce qui sera rendu neacutecessaire par la suite par la modeacutelisation relationnelle (les cleacutes eacutetrangegraveres par exemple) ou limpleacutementation (loptimisation par exemple) Agrave chaque jour suffit sa peine Peacutedagogiquement enfin les deacutebutants ont tendance (agrave cause des environnements de conception graphique comme phpMyAdmin notamment) agrave systeacutematiser les cleacutes artificielles en SQL (on pourrait en discuter) mais eacutegalement agrave ne pas faire le travail de recherche des cleacutes naturelles (au niveau relationnel notamment ce qui est une faute de modeacutelisation) Donc au plus tard on fait intervenir les cleacutes artificielles au plus on a une chance de penser aux cleacutes naturelles

Soit le modegravele relationnel suivant

1 Etu (id numEtu) avec numEtu cleacute 2 UV (id codeUv) avec codeUv cleacute3 Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

La question qui permet dafficher la liste des eacutetudiants (numEtu) avec leurs UVs (codeUv) neacutecessite une jointure des cleacutes artificielles Un modegravele sans ces cleacutes artificielles aurait eacuteteacute plus performant pour agrave causereacutepondre agrave cette question puisque toutes les informations se trouvent dans la relation Inscriptions

1 Etu (numEtu) 2 UV (codeUv) 3 Inscriptions (uv=gtUV etu=gtEtu)

Ne soyez pas systeacutematiqueIl est en effet freacutequent dans un projet reacuteel dadopter des cleacutes artificielles presque systeacutematiquement vous pourrez le faire en connaissance de cause quand vous aurez bien compris pourquoi cest inteacuteressant et quand ccedila ne lest pasLes cleacutes artificielles sont inteacuteressantes pour autre chose que les performances (leacutevolutiviteacute par exemple choisissez-les quand vous savez pourquoi)Les cleacutes artificielles ne dispensent pas de rechercher les cleacutes naturelles Les cleacutes artificielles ne sont pas la seule faccedilon doptimiser une base de donneacutees (indexation deacutenormalisation)

53 Bibliographie commenteacutee sur la modeacutelisation UML

Il existe de nombreux outils de modeacutelisation UML On pourra citer

logiciel Open Source et multi-plateformes facile dusage (qui marche neacuteanmoins mieux sur Linux Dia

que sur Windows)

(version gratuite)Objecteering

Cleacutes artificielles et optimisation est-il toujours plus performant dutiliser des cleacutes artificielles

Conseil

Compleacutement Outils de modeacutelisation UML

Etu (id numEtu) avec numEtu cleacute

UV (id codeUv) avec codeUv cleacute

Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

Etu (numEtu)

UV (codeUv)

Inscriptions (uv=gtUV etu=gtEtu)

Bibliographie commenteacutee sur la modeacutelisation UML

28

- - - - - -

- - - - - -

Agrave voir eacutegalement en Open Source ou (non testeacute par lauteur)ArgoUML EclipseUML

UML2 en action

Pour un aperccedilu plus deacutetailleacute des possibiliteacutes dexpression du diagramme de classe UML lire le chapitre 7 Deacuteveloppement du modegravele statique (pages 133 agrave 163)

On pourra notamment y trouver

Lassociation dagreacutegationLes proprieacuteteacutes dassociationLexpression de rocircles dans les associationsLes attributs de classeLes qualificatifsLes opeacuterations (ou meacutethodes)

Le chapitre donne de plus des conseils meacutethodologiques pour la conception (voir en particulier la synthegravese page 163)

On pourra eacutegalement y trouver

Des principes de choix de modeacutelisation entre attributs et classes et sur la segmentation des classesDes principes de seacutelection des attributs (redondance avec les associations avec les classes etc)Des principes de seacutelection des associationsDes principes de choix de cardinaliteacute (notamment pour la gestion dhistorisation)Des principes de seacutelection des relations de geacuteneacuteralisation (heacuteritage)Des principes dintroduction de meacutetaclasses (type)s

U M L e n Franccedilais

Une tregraves bonne reacutefeacuterence en ligne sur la modeacutelisation UML avec des cours des liens vers la norme etc

Le contenu deacutepasse tregraves largement lusage dUML pour la modeacutelisation de BD (et ne fait dailleurs pas de reacutefeacuterence preacutecise agrave ce sous-ensemble particulier)

On pourra consulter en particulier le chapitre sur les diagrammes de classe httpumlfreefrcoursi-p14html

UML en 5 eacutetapes

On consultera en particulier le tutoriel sur les diagrammes de classe httpdeveloppeurjournaldunetcomtutorielcpt010607cpt_umlintroshtml

Cinq petits conseils pour un scheacutema UML efficace

Compleacutement Modeacutelisation UML

Compleacutement Reacutefeacuterence UML en ligne

Compleacutement Tutoriel sur la modeacutelisation UML

Compleacutement Conseils

Synthegravese Les diagrammes de modeacutelisation conceptuelle

29

-

-

- -

-

- -

-

-

- -

-

- - - -

-

-

(chapitre 3)UML2 par la pratique

Des explications exemples et eacutetudes de cas

54 Synthegravese Les diagrammes de modeacutelisation conceptuelle

Un modegravele conceptuel peut ecirctre repreacutesenteacute sous forme de diagramme E-A ou sous forme de diagramme de classe UML

Classe ou Entiteacute

Attribut ou Proprieacuteteacute

TypeacuteMulti-valueacuteComposeacuteDeacuteriveacute

Meacutethode

ParamegravetresValeur de retour

Association

Association

VerbeCardinaliteacute

Heacuteritage

Heacuteritage dattributsHeacuteritage de meacutethodes

Composition (ou entiteacute faible)

Cardinaliteacute

Compleacutement Pratique

Exercices

30

-

-

-

-

-

-

-

1 2

1

1 Exercice Lab III[20 min]

Description du problegraveme

Un laboratoire souhaite geacuterer les meacutedicaments quil conccediloit

Un meacutedicament est deacutecrit par un nom qui permet de lidentifier En effet il nexiste pas deux meacutedicaments avec le mecircme nom Un meacutedicament comporte une description courte en franccedilais ainsi quune description longue en latin On gegravere aussi le conditionnement du meacutedicament cest agrave dire le nombre de pilules par boicircte (qui est un nombre entier)Agrave chaque meacutedicament on associe une liste deacutedieacutee de contre-indications geacuteneacuteralement plusieurs parfois aucune Les contre-indications sont trieacutees par ordre dimportance Lordre est total est strict pour un meacutedicament donc chaque contre-indication possegravede une importance et il nexiste pas deux contre-indications associeacutees au mecircme meacutedicament avec la mecircme importanceTout meacutedicament possegravede au moins un composant souvent plusieurs Un composant est identifieacute par un code unique et possegravede un intituleacute Tout composant peut intervenir dans la fabrication de plusieurs meacutedicaments Il existe des composants qui ne sont pas utiliseacutes pour fabriquer des meacutedicaments et que lon veut quand mecircme geacuterer

Donneacutees de test

Afin de mateacuterialiser notre base de donneacutees nous obtenons les descriptions suivantes

Le a pour description courte et pour description longue Chourix Meacutedicament contre la chute des chouxlaquo raquoVivamus fermentum semper porta Nunc diam velit adipiscing ut tristique vitae sagittis vel odio laquo

Il est conditionneacute en boicircte de 13Maecenas convallis ullamcorper ultricies Curabitur ornare raquoSes contre-indications sont

Le Chourix ne doit jamais ecirctre pris apregraves minuitLe Chourix ne doit jamais ecirctre mis au contact avec de leau

Ses composants sont le et le HG79 SN50Le a pour description courte et pour Tropas Meacutedicament contre les dysfonctionnements intellectuelslaquo raquodescription longue Suspendisse lectus leo consectetur in tempor sit amet placerat quis neque Etiam laquo

Il est conditionneacute en boicircte de 42luctus porttitor lorem sed suscipit est rutrum non raquoSes contre-indications sont

Le Tropas doit ecirctre gardeacute agrave labri de la lumiegravere du soleil

Son unique composant est le HG79Les composants existants sont

HG79 Vif-argent alleacutegeacute

ExercicesII

Exercice Eacutetudiants et UVs (introduction)

31

- - -

- - HG81 Vif-argent alourdi

SN50 Pur eacutetain

Question 1

Question 2

Question 3

2 Exercice Eacutetudiants et UVs (introduction)[20 min]

On dispose du scheacutema UML ci-apregraves qui deacutecrit des eacutetudiants des UV les notes obtenues par les eacutetudiants agrave ces UV et les diplocircmes dorigine de ces eacutetudiants

Eacutetudiants et UVs

key deacutesigne des cleacutes candidates ici toutes les cleacutes ne sont composeacutees que dun seul attributlocal key deacutesigne une cleacute localeun semestre est de la forme PYYYY ou AYYYY (ougrave YYYY deacutesigneacute une anneacutee sur 4 chiffre) exemple A2013 P2014

Rappel Notion de cleacute locale dans classes dassociation (cf p49)

Effectuez le modegravele conceptuel en UML de ce problegraveme

Indices

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans deacutedieacuteeles donneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition

[ ]solution ndeg4 [ ] p56

En mobilisant les regravegles adeacutequates proposer un modegravele logique de donneacutees correspondant en relationnel Le repeacuterage des domaines et des cleacutes est obligatoire

[ ]solution ndeg5 [ ] p57

Dessiner des tableaux remplis avec les donneacutees fournies en exemple afin de montrer que le modegravele fonctionne selon le besoin exprimeacute initialement On pourra mettre le premier mot seulement des descriptions pour gagner du temps

[ ]solution ndeg6 [ ] p57

Exercice Super-heacuteros relationnels I

32

-

-

Question

3 Exercice Super-heacuteros relationnels I[20 min]

La gamme de super-heacuteros GARVEL veut reacutealiser la base de donneacutees de leurs figurines articuleacutees La socieacuteteacute a fait reacutealiser un modegravele UML qui doit servir de point de deacutepart agrave la mise en œuvre

Modegravele UML Figurines GARVEL

Question

4 Exercice Objets Numeacuteriques Libres[30 min]

Lassociation ONL (Objets Numeacuteriques Libres) est une association de promotion des logiciels libres Elle souhaite exposer sur un site Internet une liste de logiciels libres Ce site sera adosseacute agrave une base de donneacutees relationnelle ou relationnel-objet La premiegravere eacutetape de sa deacutemarche est de reacutealiser un modegravele conceptuel repreacutesentant ce quelle souhaite faire

La base de donneacutees permet de geacuterer des applicationsLes applications sont identifieacutees par leur nom (LibreOffice Gimp) et leur version (10 21) et comportent une description courte et une URL Tous les attributs sont obligatoires Chaque application a une URL uniqueLa base de donneacutees permet de geacuterer des librairies

Traduire le scheacutema en modegravele logique relationnel ( )MLD1

On choisira obligatoirement les cleacutes primaires parmi celles neacutecessitant le plus petit nombre de bits possible pour leur codage

[ ]solution ndeg7 [ ] p57

Transformer le modegravele UML en modegravele relationnel (justifier les passages non triviaux en particulier la relation dheacuteritage)

[ ]solution ndeg8 [ ] p58

Exercice Objets Numeacuteriques Libres

33

-

-

-

-

-

-

-

-

-

-

-

-

Les librairies sont des logiciels mais pas des applications Elles ont les mecircmes attributs que les applications (nom version description courte URL) mais les URL ne sont pas neacutecessairement uniques Les applications peuvent deacutependre de librairies ou dautres applications et les librairies peuvent deacutependre dautres librairies (mais pas dune application)La base de donneacutees permet de geacuterer des composantsLes composants sont inteacutegreacutes agrave une application ou librairie Les composants ont un code interne agrave lapplication ou la librairie quil servent une version et une description courte et une URL Le code et le numeacutero de version permettent didentifier localement le composant au sein de la librairie ou de lapplication la description courte et lURL sont optionnellesLa base de donneacutees permet de geacuterer des licencesLes applications librairies et composants sont attacheacutes agrave une ou plusieurs licences identifieacutees par leur nom (GPL MPL) leur version et leur langue et comportant le texte inteacutegral de la licence Les versions des logiciels et licences sont de type numeacutero de licence majeur point numeacutero de licence mineur comme 10 ou 22La base de donneacutees permet de geacuterer des cateacutegoriesChaque logiciel est rangeacute dans une cateacutegorie principale et plusieurs cateacutegories secondaires Exemple de cateacutegories bureautique dessin multimeacutedia physique

Exemple (factice) de donneacutees

Applications

Scenari 41 une chaicircne eacuteditoriale XML httpscenariorg deacutepend de Libreoffice 43 et de ImageMagick 68Libreoffice 43 une suite bureautique WYSIWYG httplibreofficeorg

Librairie

ImageMagick 68 permet de creacuteer de convertir de modifier et dafficher des images http imagemagickorg

Composant

impng 02 est un composant de ImageMagick 68 permet de compresser une image au format PNG

Toutes ces applications librairies et composants sont disponibles sous une licence LGPL 30 et GPL 30 franccedilaisesToutes ces applications et librairies sont rangeacutees dans la cateacutegorie principale document Scenari est rangeacute dans la cateacutegorie secondaire Eacutedition WYSIWYM Libreoffice dans la cateacutegorie secondaire Bureautique ImageMagick dans la cateacutegorie secondaire Multimeacutedia

Question

Reacutealiser un MCD en UML[ ]solution ndeg9 [ ] p58

Devoirs

34

1 Exercice Arbre de scegravene 3D[30 minutes]

On souhaite pouvoir geacuterer les diffeacuterents eacuteleacutements composant des scegravenes 3D dans une base de donneacutees Une scegravene contient des objets qui eux-mecircmes peuvent appartenir agrave plusieurs scegravenes (au moins une) mais il ne peut y avoir plusieurs fois le mecircme objet dans une mecircme scegravene Dans chaque scegravene les objets peuvent ecirctre visibles ou invisibles Les scegravenes et les objets sont identifieacutes de maniegravere unique par un nom Une scegravene peut ecirctre active ou inactive Un objet a comme proprieacuteteacute une position dans lespace repreacutesenteacutee par un vecteur de reacuteels agrave trois composantes (x y z) Les objets sont organiseacutes de maniegravere hieacuterarchique un objet peut ecirctre parent de plusieurs objets et chaque objet peut avoir au plus un parent Des scripts peuvent ecirctre associeacutes agrave un objet ou agrave une scegravene (agrave lun ou agrave lautre mais pas aux deux) Un script est identifieacute de maniegravere unique par un nom et possegravede eacutegalement un attribut permettant de connaicirctre son eacutetat (actif ou inactif) Un personnage est un objet particulier qui possegravede des animations Une animation est relative agrave un personnage et est identifieacutee de maniegravere locale par un nom Agrave un objet est associeacute un maillage et celui-ci peut ecirctre utiliseacute par plusieurs objets Un maillage est identifieacute de maniegravere unique par un nom et est composeacute de plusieurs eacuteleacutements Chaque eacuteleacutement est relatif agrave un maillage et est identifieacute de maniegravere locale par un numeacutero Il existe exactement trois types deacuteleacutement des nœuds des arrecirctes et des faces Une face est deacutelimiteacutee par trois arrecirctes et chaque arrecircte est deacutelimiteacutee par deux nœuds Plusieurs arrecirctes peuvent partager un mecircme nœud et plusieurs faces peuvent partager une mecircme arrecircte Afin deacutevaluer la complexiteacute dune scegravene on souhaite pouvoir calculer le nombre de faces afficheacutees pour une scegravene donneacutee (cest-agrave-dire la somme du nombre de faces du maillage associeacute aux objets visibles de la scegravene) Un maillage possegravede plusieurs mateacuteriaux identifieacutes de maniegravere unique par un nom Un mateacuteriau peut ecirctre associeacute agrave plusieurs maillages Un mateacuteriau est caracteacuteriseacute par une couleur deacutefinie par un vecteur dentiers agrave quatre composantes rouge vert bleu alpha Un mateacuteriau peut posseacuteder une texture et celle-ci peut ecirctre utiliseacutee par plusieurs mateacuteriaux Une texture est identifieacutee de maniegravere unique par un nom et possegravede comme attribut une image

Question 1

Question 2

DevoirsIII

Proposez une clarification de ce problegraveme On pourra reclasser les informations par grande cateacutegorie scegravene objets scripts

Eacutetablissez un modegravele conceptuel en UML de ce problegraveme

Compleacutement Exercices de modeacutelisation suppleacutementaire

35

1 Exercice Appartements agrave louer[30 min]

Une agence dimmobilier (ventes et locations) veut geacuterer son parc dappartements dans une base de donneacutees Chaque appartement possegravede plusieurs piegraveces qui peuvent ecirctre des piegraveces dhabitation des piegraveces de rangement ou des commoditeacutes

Chaque piegravece a une superficie un nombre de prises eacutelectriques et des meubles Pour ces derniers on veut enregistrer le nom du modegravele et le type (chaise lit four etc) Rien nempecircche quune piegravece comporte plusieurs meubles identiques (par exemple plusieurs chaises PIN IQUEA) Les piegraveces dhabitation ont une ou plusieurs fenecirctres les piegraveces de rangement ont une ou plusieurs eacutetagegraveres et une surface de rangement utile totale On veut aussi savoir dans quelles piegraveces de rangement se situent les tableaux eacutelectriques de lappartement Finalement les piegraveces commoditeacutes peuvent ecirctre de trois types cuisine toilette ou salle de bain

Lagence veut aussi enregistrer les portes entre les diffeacuterentes piegraveces Une porte peut ecirctre agrave simple battant double battant coulissante ou une simple ouverture

Chaque appartement a une adresse une superficie totale (qui est la somme des superficies des piegraveces) et un type qui est la lettre T suivie du nombre de piegraveces dhabitation de lappartement Pour un appartement donneacute chaque piegravece est identifieacutee par un numeacutero (commenccedilant au numeacutero 1)

Lagence veut eacutegalement enregistrer le quartier ougrave se trouve lappartement auquel est lieacute un prix par megravetre carreacute Finalement elle veut garder un historique de lhistoire de lappartement les peacuteriodes pour lesquelles il est libre occupeacute en travaux ou vendu

Question

2 Exercice Objectifs[40 min]

Vous prenez la preacutesidence de lassociation Objectifs dont lobjet est daider ses eacutetudiants membres agrave mener des projets dans le cadre de leurs eacutetudes

Compleacutement Exercices de modeacutelisation suppleacutementaire

IV

Reacutealisez le diagramme UML reacutepondant aux besoins de cette agence[ ]solution ndeg10 [ ] p59

Exercice Objectifs

36

- - -

-

-

- - -

Vous constatez en arrivant dans lassociation que personne ne sait exactement quels sont les projets en cours ni qui fait quoi dans les projets Vous ne parvenez pas non plus agrave obtenir une liste exacte des partenaires sur lesquels lassociation peut compter La seule chose sur laquelle vous parvenez agrave mettre la main est un fichier tableur vaguement agrave jour

Vous deacutecidez quil est plus que temps de mettre en place une base de donneacutees afin dassurer la bonne gestion des informations les plus importantes pour lassociation Vous vous attachez pour cela agrave reacutealiser une analyse des besoins

Analysez les documents ci-apregraves

Etat des projets

Eacutetat des projets de lassociation Objectifs

Recueil de besoins

Agrave partir de leacutetude du fonctionnement actuel de lassociation vous relevez les choses importantes agrave geacuterer suivantes

Les membres de lassociation geacuteneacuteralement identifieacutes par leur preacutenomLes projets geacutereacutes par lassociation avec des dates de deacutebut et de fin preacutecises et un chef de projetLe deacutetail des tacircches de chaque projet avec leurs dates de deacutebut et de fin aussi et la liste de tous les membres qui y participentLa liste des partenaires des projets avec leur rocircle preacutecis pour chacun des projets auxquels ils participent

Afin de mieux geacuterer les attributions des projets il serait eacutegalement inteacuteressant de creacuteer une liste des speacutecialiteacutes correspondant agrave ce qui ce fait dans lassociation et daffecter une speacutecialiteacute agrave chaque membre ainsi quune agrave chaque projet pour voir si ce sont bien les membres les mieux adapteacutes qui travaille sur les projets

Recueil de donneacutees

Les discussions avec les anciens membres de lassociation vous apprennent les choses suivantes

Lassociation a termineacute de geacuterer les trois projets Comeacutedie Musicale geacutereacutee par Nathalie sur les trois premiers mois du semestre dautomne 1001 Science en fecircte geacutereacutee par Pierre sur tout le semestre de printemps 1003 et Nuit du picolo geacutereacutee par Julien en novembre 1001Les speacutecialiteacutes recenseacutees pour le moment sont Ville Universiteacute Sport Entreprise Culture InternationalIl faut au moins dix membres agrave lassociation (sinon elle ferme) recruter ceux qui manquentAidez lassociation agrave diviser ses projets en tacircches

Exercice Objectifs

37

- Les partenaires suivants aident ou ont aideacute lassociation la mairie pour la comeacutedie musicale et la science en fecircte qui apporte un soutien financier le ministegravere de la culture qui apporte son soutien logistique agrave la science en fecircte lassociation des commerccedilants de la ville qui apporte son soutien publicitaire agrave la comeacutedie musicale 1664 qui offre ses biegraveres agrave moitieacute prix pour la nuit du Picolo

Question 1

Question 2

Question 3

Afin de preacuteparer une analyse des besoins sommaire listez les donneacutees que vous devrez geacuterer agrave laide des documents et recueils de discussion agrave votre disposition Faites des hypothegraveses lorsque les donneacutees sont incomplegravetes ou incoheacuterentes

[ ]solution ndeg11 [ ] p59

Reacutealiser le MCD en UML et en E-A agrave partir des donneacutees preacutepareacutees dans la question preacuteceacutedente[ ]solution ndeg12 [ ] p60

Reacutealiser le MLD en relationnel en traduisant votre MCD[ ]solution ndeg13 [ ] p61

Contenus annexes

38Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

- - -

gt Attributs

Un attribut est une information eacuteleacutementaire qui caracteacuterise une classe et dont la valeur deacutepend de lobjet instancieacute

Le domaine des valeurs que peut prendre lattribut est fixeacute a prioriUn attribut est typeacute

Il peut prendre plusieurs valeurs distinctes dans son domaineUn attribut peut ecirctre multivalueacute Sa valeur alors est une fonction sur dautres attributs de la classeUn attribut peut ecirctre deacuteriveacute

(ou composite) Il joue alors le rocircle dun groupe dattributs (par Un attribut peut ecirctre composeacuteexemple une adresse peut ecirctre un attribut composeacute des attributs numeacutero type de voie nom de la voie) Cette notion renvoie agrave la notion de variable de type dans les langages de Record

programmation classiques

En UML on preacutefegravere lusage de meacutethodes aux attributs deacuteriveacutes On utilisera toujours des meacutethodes degraves que la valeur de lattribut deacuteriveacute deacutepend dautres attributs exteacuterieurs agrave sa classeEn UML on preacutefegravere lusage de compositions aux attributs composeacutes On utilisera toujours des compositions pour les attributs composeacutes et multivalueacutes

1 attributtype2 attribut_multivalueacute[nbMinValeursnbMaxValeurs]type3 attribut_deacuteriveacutetype4 attribut_composeacute5   - sous-attribut1type6   - sous-attribut2type7   -

Contenus annexes

Deacutefinition Attribut

Attention On utilise peu les attributs deacuteriveacutes et composeacutes en UML

Syntaxe

attributtype

attribut_multivalueacute[nbMinValeursnbMaxValeurs]type

attribut_deacuteriveacutetype

attribut_composeacute

  - sous-attribut1type

  - sous-attribut2type

  -

Contenus annexes

39Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Repreacutesentation dattributs en UML

Dans cet exemple les attributs Nom Preacutenom sont de type lun de 20 caractegraveres et lautre de 10 stringtandis que DateNaissance est de type et Age de type Preacutenom est un attribut multivalueacute ici date integerune personne peut avoir de 1 agrave 3 preacutenoms Age est un attribut deacuteriveacute il est calculeacute par une fonction sur DateNaissance

Meacutethodes (cf p39)

Composition (cf p5)

gt Meacutethodes

Une meacutethode (ou opeacuteration) est une fonction associeacutee agrave une classe dobjet qui permet dagir sur les objets de la classe ou qui permet agrave ces objets de renvoyer des valeurs (calculeacutees en fonction de paramegravetres)

1 methode(paramegravetres)type

Pour la modeacutelisation des bases de donneacutees les meacutethodes sont surtout utiliseacutees pour repreacutesenter des donneacutees calculeacutees (agrave linstar des attributs deacuteriveacutees) ou pour mettre en exergue des fonctions importantes du systegraveme cible Seules les meacutethodes les plus importantes sont repreacutesenteacutees lapproche est moins systeacutematique quen modeacutelisation objet par exemple

Lors de la transformation du modegravele conceptuel UML en modegravele logique relationnel les meacutethodes ne Leur repeacuterage au niveau conceptuel sert donc surtout daide-seront geacuteneacuteralement pas impleacutementeacutees

meacutemoire pour limpleacutementation au niveau applicatif

Exemple La classe Personne

Compleacutement Voir aussi

Deacutefinition Meacutethode

Syntaxe

Remarque Meacutethodes et modeacutelisation de BD

Remarque Meacutethodes relationnel relationnel-objet

methode(paramegravetres)type

Contenus annexes

40Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Au contraire un modegravele logique relationnel-objet permettra limpleacutementation de meacutethodes directement associeacutees agrave des tables Leur repeacuterage au niveau conceptuel est donc encore plus important

Transformation des meacutethodes par des vues (cf p40)

gt Transformation des meacutethodes par des vues

Lorsquune meacutethode est speacutecifieacutee sur un diagramme UML pour une classe C si cette meacutethode est une fonction relationnelle (elle renvoie une unique valeur et elle peut ecirctre reacutesolue par une requecircte SQL) alors on creacutee une vue qui reprend les attributs de la classe C et ajoute des colonnes calculeacutees pour les meacutethodes

Les attributs deacuteriveacutes eacutetant apparenteacutes agrave des meacutethodes ils peuvent eacutegalement ecirctre geacutereacutes par des vues

gt Classe dassociation

On utilise la notation des classes dassociation lorsque lon souhaite ajouter des proprieacuteteacutes agrave une association

Notation dune classe dassociation en UML

On reacuteserve en geacuteneacuteral les classes dassociation aux associations NM

Il est toujours possible de reacuteduire une classe dassociation sur une association 1N en migrant ses attributs sur la classe cocircteacute N et cest en geacuteneacuteral plus lisible ainsi

Compleacutement

Meacutethode

Remarque Attributs deacuteriveacutes

Deacutefinition Classe dassociation

Syntaxe Notation dune classe dassociation en UML

Meacutethode

Contenus annexes

41Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

-

Emplois

Selon le standard UML une classe dassociation est une classe et agrave ce titre elle peut ecirctre mobiliseacutee dans dautres associations ou dans des heacuteritages Nous deacuteconseillons neacuteanmoins ces notations qui ont tendance agrave complexifier la lecture et la transformation du diagramme

Nous conseillons donc de ne jamais associer une classe dassociation

gt Transformation des attributs

Pour chaque attribut eacuteleacutementaire et monovalueacute dune classe

on creacutee un attribut correspondant

Attribut

Classe1(ab)

Pour chaque attribut composite comprenant N sous-attributs dune classe

on creacutee N attributs correspondantsdont les noms sont la concateacutenation du nom de lattribut composite avec celui du sous-attribut

Exemple Exemple de classe dassociation

Conseil

Meacutethode Attributs simples

Meacutethode Attributs composites

Contenus annexes

42Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- - - -

Attribut composeacute

Classe1(ab_b1b_b2)

Pour chaque attribut multivalueacute b dune classe C

on creacutee une nouvelle relation RBqui comprend un attribut monovalueacute correspondant agrave bplus la cleacute de la relation repreacutesentant C la cleacute de RB est la concateacutenation des deux attributs

Attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Dans le cas ougrave le nombre maximum de est fini et petit on peut eacutegalement adopter la transformation b

suivante Classe1(ab1b2b3b4b5b6b7b8b9b10)

Si le nombre dattributs est infini ( ) cest impossible sil est trop grand ce nest pas souhaitableb[1]

On combine les regravegles eacutenonceacutees pour les attributs composeacutes et pour les attributs multivalueacutes

Attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Transformation des compositions (cf p42)

Meacutethode Attributs multivalueacutes

Meacutethode Attributs multivalueacutes (meacutethode alternative)

Meacutethode Attributs composeacutes multivalueacutes

Rappel Voir aussi

Contenus annexes

43Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

gt Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Compleacutement Attributs multivalueacutes et composeacutes

Contenus annexes

44Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

Rappel Voir aussi

Rappel

Meacutethode

Contenus annexes

45Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p48)

gt Transformation des associations 1N

Pour chaque association binaire de type 1N

on ajoute agrave la relation cocircteacute N une cleacute eacutetrangegravere vers la relation cocircteacute 1

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Meacutethode

Contenus annexes

46Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Association 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Contrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p46)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

R1

Compleacutement

Rappel

Meacutethode

Contenus annexes

47Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p47)

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Deacutefinition Projection

Contenus annexes

48Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Deacutefinition Projection

Contenus annexes

49Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Transformation des classes dassociation

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de lassociation NM

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Meacutethode Classe dassociation NM

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Synthegravese sur la modalisation UML et relationnelle

25

Quelques eacuteleacutements de stylistique UML

26

-

- -

-

-

-

- - -

- - - -

1

2

3

5 Synthegravese sur la modalisation UML et relationnelle51 Quelques eacuteleacutements de stylistique UML

Toutes les associations doivent ecirctre nommeacutees (sauf composition heacuteritage agreacutegation)Ne pas utiliser de nom geacuteneacuterique pour les Classes comme Entiteacute Classe Objet TrucEacuteviter les noms geacuteneacuteriques pour les associations (comme est associeacute agrave)Attention au sens des compositions et agreacutegation le losange est cocircteacute ensemble et noubliez pas les cardinaliteacutes notamment cocircteacute parties

Nutilisez pas le souligneacute ni les en UML pour identifier les cleacutes preacutefeacuterez la contrainte keyPreacutefeacuterez lheacuteritage aux booleacuteens de typage en UMLLes attributs deacuteriveacutes sont reacuteserveacutes aux deacuterivations simples (des attributs de la mecircme classe) si cest plus complexe preacutefeacuterez des meacutethodes (et dans le doute preacutecisez les modes de calcul sur le scheacutema ou dans une note agrave part)Donnez des exemples de contenu lorsque ce nest pas eacutevident (lorsque le couple nom dattribut et type ne permet pas de faccedilon eacutevidente de comprendre de quoi lon parle)Inutile de deacuteclarer le type booleacuteen en UML utilisez-le directement comme un type de donneacutees connu

Si tous vos heacuteritages sont exclusifs notez-le agrave part pour alleacuteger votre scheacutema (et eacuteviter labondance de XOR)

52 Attention aux cleacutes artificielles

en UML on ne pose jamais de cleacutes artificiellesen relationnel on pose rarement des cleacute artificielles sauf dans le cas de cleacutes eacutetrangegraveres vraiment trop compliqueacuteesen SQL on peut poser des cleacutes artificielles si on a une bonne raison (ce nest donc pas systeacutematique et cest agrave justifier)

On najoutera pas de cleacute artificielle en UML au moment de la modeacutelisation conceptuelle des donneacutees

Formellement en UML la notion de cleacute nexiste pas (contrairement agrave l ) elle est ajouteacutee par les E-A

pratiquants des BD

Logiquement on a pas besoin de cette notion en UML les cleacutes artificielles servent en relationnel et dans certains cas uniquementPratiquement cela peut conduire agrave des situations absurdes (comme enlever au niveau logique des cleacutes artificielles ajouteacutees au niveau conceptuel)

Attention

Conseil

Compleacutement

Fondamental

Cleacutes artificielles et niveau conceptuel

Bibliographie commenteacutee sur la modeacutelisation UML

27

-

-

- -

-

- -

-

-

3

4

5

si on fait du non-relationnel on ne doit pas ajouter de cleacutes artificielles dans certains cas (limbrication typiquement) cela arrive mecircme en relationnel avec la transformation de lheacuteritage (dans certains cas toujours)

Meacutethodologiquement il faut se concentrer agrave chaque phase sur ce qui est important donc au moment du MCD on traduit les besoins on repegravere les contraintes explicites (cleacute uniciteacute non nulliteacute) sans se preacuteoccuper de ce qui sera rendu neacutecessaire par la suite par la modeacutelisation relationnelle (les cleacutes eacutetrangegraveres par exemple) ou limpleacutementation (loptimisation par exemple) Agrave chaque jour suffit sa peine Peacutedagogiquement enfin les deacutebutants ont tendance (agrave cause des environnements de conception graphique comme phpMyAdmin notamment) agrave systeacutematiser les cleacutes artificielles en SQL (on pourrait en discuter) mais eacutegalement agrave ne pas faire le travail de recherche des cleacutes naturelles (au niveau relationnel notamment ce qui est une faute de modeacutelisation) Donc au plus tard on fait intervenir les cleacutes artificielles au plus on a une chance de penser aux cleacutes naturelles

Soit le modegravele relationnel suivant

1 Etu (id numEtu) avec numEtu cleacute 2 UV (id codeUv) avec codeUv cleacute3 Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

La question qui permet dafficher la liste des eacutetudiants (numEtu) avec leurs UVs (codeUv) neacutecessite une jointure des cleacutes artificielles Un modegravele sans ces cleacutes artificielles aurait eacuteteacute plus performant pour agrave causereacutepondre agrave cette question puisque toutes les informations se trouvent dans la relation Inscriptions

1 Etu (numEtu) 2 UV (codeUv) 3 Inscriptions (uv=gtUV etu=gtEtu)

Ne soyez pas systeacutematiqueIl est en effet freacutequent dans un projet reacuteel dadopter des cleacutes artificielles presque systeacutematiquement vous pourrez le faire en connaissance de cause quand vous aurez bien compris pourquoi cest inteacuteressant et quand ccedila ne lest pasLes cleacutes artificielles sont inteacuteressantes pour autre chose que les performances (leacutevolutiviteacute par exemple choisissez-les quand vous savez pourquoi)Les cleacutes artificielles ne dispensent pas de rechercher les cleacutes naturelles Les cleacutes artificielles ne sont pas la seule faccedilon doptimiser une base de donneacutees (indexation deacutenormalisation)

53 Bibliographie commenteacutee sur la modeacutelisation UML

Il existe de nombreux outils de modeacutelisation UML On pourra citer

logiciel Open Source et multi-plateformes facile dusage (qui marche neacuteanmoins mieux sur Linux Dia

que sur Windows)

(version gratuite)Objecteering

Cleacutes artificielles et optimisation est-il toujours plus performant dutiliser des cleacutes artificielles

Conseil

Compleacutement Outils de modeacutelisation UML

Etu (id numEtu) avec numEtu cleacute

UV (id codeUv) avec codeUv cleacute

Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

Etu (numEtu)

UV (codeUv)

Inscriptions (uv=gtUV etu=gtEtu)

Bibliographie commenteacutee sur la modeacutelisation UML

28

- - - - - -

- - - - - -

Agrave voir eacutegalement en Open Source ou (non testeacute par lauteur)ArgoUML EclipseUML

UML2 en action

Pour un aperccedilu plus deacutetailleacute des possibiliteacutes dexpression du diagramme de classe UML lire le chapitre 7 Deacuteveloppement du modegravele statique (pages 133 agrave 163)

On pourra notamment y trouver

Lassociation dagreacutegationLes proprieacuteteacutes dassociationLexpression de rocircles dans les associationsLes attributs de classeLes qualificatifsLes opeacuterations (ou meacutethodes)

Le chapitre donne de plus des conseils meacutethodologiques pour la conception (voir en particulier la synthegravese page 163)

On pourra eacutegalement y trouver

Des principes de choix de modeacutelisation entre attributs et classes et sur la segmentation des classesDes principes de seacutelection des attributs (redondance avec les associations avec les classes etc)Des principes de seacutelection des associationsDes principes de choix de cardinaliteacute (notamment pour la gestion dhistorisation)Des principes de seacutelection des relations de geacuteneacuteralisation (heacuteritage)Des principes dintroduction de meacutetaclasses (type)s

U M L e n Franccedilais

Une tregraves bonne reacutefeacuterence en ligne sur la modeacutelisation UML avec des cours des liens vers la norme etc

Le contenu deacutepasse tregraves largement lusage dUML pour la modeacutelisation de BD (et ne fait dailleurs pas de reacutefeacuterence preacutecise agrave ce sous-ensemble particulier)

On pourra consulter en particulier le chapitre sur les diagrammes de classe httpumlfreefrcoursi-p14html

UML en 5 eacutetapes

On consultera en particulier le tutoriel sur les diagrammes de classe httpdeveloppeurjournaldunetcomtutorielcpt010607cpt_umlintroshtml

Cinq petits conseils pour un scheacutema UML efficace

Compleacutement Modeacutelisation UML

Compleacutement Reacutefeacuterence UML en ligne

Compleacutement Tutoriel sur la modeacutelisation UML

Compleacutement Conseils

Synthegravese Les diagrammes de modeacutelisation conceptuelle

29

-

-

- -

-

- -

-

-

- -

-

- - - -

-

-

(chapitre 3)UML2 par la pratique

Des explications exemples et eacutetudes de cas

54 Synthegravese Les diagrammes de modeacutelisation conceptuelle

Un modegravele conceptuel peut ecirctre repreacutesenteacute sous forme de diagramme E-A ou sous forme de diagramme de classe UML

Classe ou Entiteacute

Attribut ou Proprieacuteteacute

TypeacuteMulti-valueacuteComposeacuteDeacuteriveacute

Meacutethode

ParamegravetresValeur de retour

Association

Association

VerbeCardinaliteacute

Heacuteritage

Heacuteritage dattributsHeacuteritage de meacutethodes

Composition (ou entiteacute faible)

Cardinaliteacute

Compleacutement Pratique

Exercices

30

-

-

-

-

-

-

-

1 2

1

1 Exercice Lab III[20 min]

Description du problegraveme

Un laboratoire souhaite geacuterer les meacutedicaments quil conccediloit

Un meacutedicament est deacutecrit par un nom qui permet de lidentifier En effet il nexiste pas deux meacutedicaments avec le mecircme nom Un meacutedicament comporte une description courte en franccedilais ainsi quune description longue en latin On gegravere aussi le conditionnement du meacutedicament cest agrave dire le nombre de pilules par boicircte (qui est un nombre entier)Agrave chaque meacutedicament on associe une liste deacutedieacutee de contre-indications geacuteneacuteralement plusieurs parfois aucune Les contre-indications sont trieacutees par ordre dimportance Lordre est total est strict pour un meacutedicament donc chaque contre-indication possegravede une importance et il nexiste pas deux contre-indications associeacutees au mecircme meacutedicament avec la mecircme importanceTout meacutedicament possegravede au moins un composant souvent plusieurs Un composant est identifieacute par un code unique et possegravede un intituleacute Tout composant peut intervenir dans la fabrication de plusieurs meacutedicaments Il existe des composants qui ne sont pas utiliseacutes pour fabriquer des meacutedicaments et que lon veut quand mecircme geacuterer

Donneacutees de test

Afin de mateacuterialiser notre base de donneacutees nous obtenons les descriptions suivantes

Le a pour description courte et pour description longue Chourix Meacutedicament contre la chute des chouxlaquo raquoVivamus fermentum semper porta Nunc diam velit adipiscing ut tristique vitae sagittis vel odio laquo

Il est conditionneacute en boicircte de 13Maecenas convallis ullamcorper ultricies Curabitur ornare raquoSes contre-indications sont

Le Chourix ne doit jamais ecirctre pris apregraves minuitLe Chourix ne doit jamais ecirctre mis au contact avec de leau

Ses composants sont le et le HG79 SN50Le a pour description courte et pour Tropas Meacutedicament contre les dysfonctionnements intellectuelslaquo raquodescription longue Suspendisse lectus leo consectetur in tempor sit amet placerat quis neque Etiam laquo

Il est conditionneacute en boicircte de 42luctus porttitor lorem sed suscipit est rutrum non raquoSes contre-indications sont

Le Tropas doit ecirctre gardeacute agrave labri de la lumiegravere du soleil

Son unique composant est le HG79Les composants existants sont

HG79 Vif-argent alleacutegeacute

ExercicesII

Exercice Eacutetudiants et UVs (introduction)

31

- - -

- - HG81 Vif-argent alourdi

SN50 Pur eacutetain

Question 1

Question 2

Question 3

2 Exercice Eacutetudiants et UVs (introduction)[20 min]

On dispose du scheacutema UML ci-apregraves qui deacutecrit des eacutetudiants des UV les notes obtenues par les eacutetudiants agrave ces UV et les diplocircmes dorigine de ces eacutetudiants

Eacutetudiants et UVs

key deacutesigne des cleacutes candidates ici toutes les cleacutes ne sont composeacutees que dun seul attributlocal key deacutesigne une cleacute localeun semestre est de la forme PYYYY ou AYYYY (ougrave YYYY deacutesigneacute une anneacutee sur 4 chiffre) exemple A2013 P2014

Rappel Notion de cleacute locale dans classes dassociation (cf p49)

Effectuez le modegravele conceptuel en UML de ce problegraveme

Indices

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans deacutedieacuteeles donneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition

[ ]solution ndeg4 [ ] p56

En mobilisant les regravegles adeacutequates proposer un modegravele logique de donneacutees correspondant en relationnel Le repeacuterage des domaines et des cleacutes est obligatoire

[ ]solution ndeg5 [ ] p57

Dessiner des tableaux remplis avec les donneacutees fournies en exemple afin de montrer que le modegravele fonctionne selon le besoin exprimeacute initialement On pourra mettre le premier mot seulement des descriptions pour gagner du temps

[ ]solution ndeg6 [ ] p57

Exercice Super-heacuteros relationnels I

32

-

-

Question

3 Exercice Super-heacuteros relationnels I[20 min]

La gamme de super-heacuteros GARVEL veut reacutealiser la base de donneacutees de leurs figurines articuleacutees La socieacuteteacute a fait reacutealiser un modegravele UML qui doit servir de point de deacutepart agrave la mise en œuvre

Modegravele UML Figurines GARVEL

Question

4 Exercice Objets Numeacuteriques Libres[30 min]

Lassociation ONL (Objets Numeacuteriques Libres) est une association de promotion des logiciels libres Elle souhaite exposer sur un site Internet une liste de logiciels libres Ce site sera adosseacute agrave une base de donneacutees relationnelle ou relationnel-objet La premiegravere eacutetape de sa deacutemarche est de reacutealiser un modegravele conceptuel repreacutesentant ce quelle souhaite faire

La base de donneacutees permet de geacuterer des applicationsLes applications sont identifieacutees par leur nom (LibreOffice Gimp) et leur version (10 21) et comportent une description courte et une URL Tous les attributs sont obligatoires Chaque application a une URL uniqueLa base de donneacutees permet de geacuterer des librairies

Traduire le scheacutema en modegravele logique relationnel ( )MLD1

On choisira obligatoirement les cleacutes primaires parmi celles neacutecessitant le plus petit nombre de bits possible pour leur codage

[ ]solution ndeg7 [ ] p57

Transformer le modegravele UML en modegravele relationnel (justifier les passages non triviaux en particulier la relation dheacuteritage)

[ ]solution ndeg8 [ ] p58

Exercice Objets Numeacuteriques Libres

33

-

-

-

-

-

-

-

-

-

-

-

-

Les librairies sont des logiciels mais pas des applications Elles ont les mecircmes attributs que les applications (nom version description courte URL) mais les URL ne sont pas neacutecessairement uniques Les applications peuvent deacutependre de librairies ou dautres applications et les librairies peuvent deacutependre dautres librairies (mais pas dune application)La base de donneacutees permet de geacuterer des composantsLes composants sont inteacutegreacutes agrave une application ou librairie Les composants ont un code interne agrave lapplication ou la librairie quil servent une version et une description courte et une URL Le code et le numeacutero de version permettent didentifier localement le composant au sein de la librairie ou de lapplication la description courte et lURL sont optionnellesLa base de donneacutees permet de geacuterer des licencesLes applications librairies et composants sont attacheacutes agrave une ou plusieurs licences identifieacutees par leur nom (GPL MPL) leur version et leur langue et comportant le texte inteacutegral de la licence Les versions des logiciels et licences sont de type numeacutero de licence majeur point numeacutero de licence mineur comme 10 ou 22La base de donneacutees permet de geacuterer des cateacutegoriesChaque logiciel est rangeacute dans une cateacutegorie principale et plusieurs cateacutegories secondaires Exemple de cateacutegories bureautique dessin multimeacutedia physique

Exemple (factice) de donneacutees

Applications

Scenari 41 une chaicircne eacuteditoriale XML httpscenariorg deacutepend de Libreoffice 43 et de ImageMagick 68Libreoffice 43 une suite bureautique WYSIWYG httplibreofficeorg

Librairie

ImageMagick 68 permet de creacuteer de convertir de modifier et dafficher des images http imagemagickorg

Composant

impng 02 est un composant de ImageMagick 68 permet de compresser une image au format PNG

Toutes ces applications librairies et composants sont disponibles sous une licence LGPL 30 et GPL 30 franccedilaisesToutes ces applications et librairies sont rangeacutees dans la cateacutegorie principale document Scenari est rangeacute dans la cateacutegorie secondaire Eacutedition WYSIWYM Libreoffice dans la cateacutegorie secondaire Bureautique ImageMagick dans la cateacutegorie secondaire Multimeacutedia

Question

Reacutealiser un MCD en UML[ ]solution ndeg9 [ ] p58

Devoirs

34

1 Exercice Arbre de scegravene 3D[30 minutes]

On souhaite pouvoir geacuterer les diffeacuterents eacuteleacutements composant des scegravenes 3D dans une base de donneacutees Une scegravene contient des objets qui eux-mecircmes peuvent appartenir agrave plusieurs scegravenes (au moins une) mais il ne peut y avoir plusieurs fois le mecircme objet dans une mecircme scegravene Dans chaque scegravene les objets peuvent ecirctre visibles ou invisibles Les scegravenes et les objets sont identifieacutes de maniegravere unique par un nom Une scegravene peut ecirctre active ou inactive Un objet a comme proprieacuteteacute une position dans lespace repreacutesenteacutee par un vecteur de reacuteels agrave trois composantes (x y z) Les objets sont organiseacutes de maniegravere hieacuterarchique un objet peut ecirctre parent de plusieurs objets et chaque objet peut avoir au plus un parent Des scripts peuvent ecirctre associeacutes agrave un objet ou agrave une scegravene (agrave lun ou agrave lautre mais pas aux deux) Un script est identifieacute de maniegravere unique par un nom et possegravede eacutegalement un attribut permettant de connaicirctre son eacutetat (actif ou inactif) Un personnage est un objet particulier qui possegravede des animations Une animation est relative agrave un personnage et est identifieacutee de maniegravere locale par un nom Agrave un objet est associeacute un maillage et celui-ci peut ecirctre utiliseacute par plusieurs objets Un maillage est identifieacute de maniegravere unique par un nom et est composeacute de plusieurs eacuteleacutements Chaque eacuteleacutement est relatif agrave un maillage et est identifieacute de maniegravere locale par un numeacutero Il existe exactement trois types deacuteleacutement des nœuds des arrecirctes et des faces Une face est deacutelimiteacutee par trois arrecirctes et chaque arrecircte est deacutelimiteacutee par deux nœuds Plusieurs arrecirctes peuvent partager un mecircme nœud et plusieurs faces peuvent partager une mecircme arrecircte Afin deacutevaluer la complexiteacute dune scegravene on souhaite pouvoir calculer le nombre de faces afficheacutees pour une scegravene donneacutee (cest-agrave-dire la somme du nombre de faces du maillage associeacute aux objets visibles de la scegravene) Un maillage possegravede plusieurs mateacuteriaux identifieacutes de maniegravere unique par un nom Un mateacuteriau peut ecirctre associeacute agrave plusieurs maillages Un mateacuteriau est caracteacuteriseacute par une couleur deacutefinie par un vecteur dentiers agrave quatre composantes rouge vert bleu alpha Un mateacuteriau peut posseacuteder une texture et celle-ci peut ecirctre utiliseacutee par plusieurs mateacuteriaux Une texture est identifieacutee de maniegravere unique par un nom et possegravede comme attribut une image

Question 1

Question 2

DevoirsIII

Proposez une clarification de ce problegraveme On pourra reclasser les informations par grande cateacutegorie scegravene objets scripts

Eacutetablissez un modegravele conceptuel en UML de ce problegraveme

Compleacutement Exercices de modeacutelisation suppleacutementaire

35

1 Exercice Appartements agrave louer[30 min]

Une agence dimmobilier (ventes et locations) veut geacuterer son parc dappartements dans une base de donneacutees Chaque appartement possegravede plusieurs piegraveces qui peuvent ecirctre des piegraveces dhabitation des piegraveces de rangement ou des commoditeacutes

Chaque piegravece a une superficie un nombre de prises eacutelectriques et des meubles Pour ces derniers on veut enregistrer le nom du modegravele et le type (chaise lit four etc) Rien nempecircche quune piegravece comporte plusieurs meubles identiques (par exemple plusieurs chaises PIN IQUEA) Les piegraveces dhabitation ont une ou plusieurs fenecirctres les piegraveces de rangement ont une ou plusieurs eacutetagegraveres et une surface de rangement utile totale On veut aussi savoir dans quelles piegraveces de rangement se situent les tableaux eacutelectriques de lappartement Finalement les piegraveces commoditeacutes peuvent ecirctre de trois types cuisine toilette ou salle de bain

Lagence veut aussi enregistrer les portes entre les diffeacuterentes piegraveces Une porte peut ecirctre agrave simple battant double battant coulissante ou une simple ouverture

Chaque appartement a une adresse une superficie totale (qui est la somme des superficies des piegraveces) et un type qui est la lettre T suivie du nombre de piegraveces dhabitation de lappartement Pour un appartement donneacute chaque piegravece est identifieacutee par un numeacutero (commenccedilant au numeacutero 1)

Lagence veut eacutegalement enregistrer le quartier ougrave se trouve lappartement auquel est lieacute un prix par megravetre carreacute Finalement elle veut garder un historique de lhistoire de lappartement les peacuteriodes pour lesquelles il est libre occupeacute en travaux ou vendu

Question

2 Exercice Objectifs[40 min]

Vous prenez la preacutesidence de lassociation Objectifs dont lobjet est daider ses eacutetudiants membres agrave mener des projets dans le cadre de leurs eacutetudes

Compleacutement Exercices de modeacutelisation suppleacutementaire

IV

Reacutealisez le diagramme UML reacutepondant aux besoins de cette agence[ ]solution ndeg10 [ ] p59

Exercice Objectifs

36

- - -

-

-

- - -

Vous constatez en arrivant dans lassociation que personne ne sait exactement quels sont les projets en cours ni qui fait quoi dans les projets Vous ne parvenez pas non plus agrave obtenir une liste exacte des partenaires sur lesquels lassociation peut compter La seule chose sur laquelle vous parvenez agrave mettre la main est un fichier tableur vaguement agrave jour

Vous deacutecidez quil est plus que temps de mettre en place une base de donneacutees afin dassurer la bonne gestion des informations les plus importantes pour lassociation Vous vous attachez pour cela agrave reacutealiser une analyse des besoins

Analysez les documents ci-apregraves

Etat des projets

Eacutetat des projets de lassociation Objectifs

Recueil de besoins

Agrave partir de leacutetude du fonctionnement actuel de lassociation vous relevez les choses importantes agrave geacuterer suivantes

Les membres de lassociation geacuteneacuteralement identifieacutes par leur preacutenomLes projets geacutereacutes par lassociation avec des dates de deacutebut et de fin preacutecises et un chef de projetLe deacutetail des tacircches de chaque projet avec leurs dates de deacutebut et de fin aussi et la liste de tous les membres qui y participentLa liste des partenaires des projets avec leur rocircle preacutecis pour chacun des projets auxquels ils participent

Afin de mieux geacuterer les attributions des projets il serait eacutegalement inteacuteressant de creacuteer une liste des speacutecialiteacutes correspondant agrave ce qui ce fait dans lassociation et daffecter une speacutecialiteacute agrave chaque membre ainsi quune agrave chaque projet pour voir si ce sont bien les membres les mieux adapteacutes qui travaille sur les projets

Recueil de donneacutees

Les discussions avec les anciens membres de lassociation vous apprennent les choses suivantes

Lassociation a termineacute de geacuterer les trois projets Comeacutedie Musicale geacutereacutee par Nathalie sur les trois premiers mois du semestre dautomne 1001 Science en fecircte geacutereacutee par Pierre sur tout le semestre de printemps 1003 et Nuit du picolo geacutereacutee par Julien en novembre 1001Les speacutecialiteacutes recenseacutees pour le moment sont Ville Universiteacute Sport Entreprise Culture InternationalIl faut au moins dix membres agrave lassociation (sinon elle ferme) recruter ceux qui manquentAidez lassociation agrave diviser ses projets en tacircches

Exercice Objectifs

37

- Les partenaires suivants aident ou ont aideacute lassociation la mairie pour la comeacutedie musicale et la science en fecircte qui apporte un soutien financier le ministegravere de la culture qui apporte son soutien logistique agrave la science en fecircte lassociation des commerccedilants de la ville qui apporte son soutien publicitaire agrave la comeacutedie musicale 1664 qui offre ses biegraveres agrave moitieacute prix pour la nuit du Picolo

Question 1

Question 2

Question 3

Afin de preacuteparer une analyse des besoins sommaire listez les donneacutees que vous devrez geacuterer agrave laide des documents et recueils de discussion agrave votre disposition Faites des hypothegraveses lorsque les donneacutees sont incomplegravetes ou incoheacuterentes

[ ]solution ndeg11 [ ] p59

Reacutealiser le MCD en UML et en E-A agrave partir des donneacutees preacutepareacutees dans la question preacuteceacutedente[ ]solution ndeg12 [ ] p60

Reacutealiser le MLD en relationnel en traduisant votre MCD[ ]solution ndeg13 [ ] p61

Contenus annexes

38Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

- - -

gt Attributs

Un attribut est une information eacuteleacutementaire qui caracteacuterise une classe et dont la valeur deacutepend de lobjet instancieacute

Le domaine des valeurs que peut prendre lattribut est fixeacute a prioriUn attribut est typeacute

Il peut prendre plusieurs valeurs distinctes dans son domaineUn attribut peut ecirctre multivalueacute Sa valeur alors est une fonction sur dautres attributs de la classeUn attribut peut ecirctre deacuteriveacute

(ou composite) Il joue alors le rocircle dun groupe dattributs (par Un attribut peut ecirctre composeacuteexemple une adresse peut ecirctre un attribut composeacute des attributs numeacutero type de voie nom de la voie) Cette notion renvoie agrave la notion de variable de type dans les langages de Record

programmation classiques

En UML on preacutefegravere lusage de meacutethodes aux attributs deacuteriveacutes On utilisera toujours des meacutethodes degraves que la valeur de lattribut deacuteriveacute deacutepend dautres attributs exteacuterieurs agrave sa classeEn UML on preacutefegravere lusage de compositions aux attributs composeacutes On utilisera toujours des compositions pour les attributs composeacutes et multivalueacutes

1 attributtype2 attribut_multivalueacute[nbMinValeursnbMaxValeurs]type3 attribut_deacuteriveacutetype4 attribut_composeacute5   - sous-attribut1type6   - sous-attribut2type7   -

Contenus annexes

Deacutefinition Attribut

Attention On utilise peu les attributs deacuteriveacutes et composeacutes en UML

Syntaxe

attributtype

attribut_multivalueacute[nbMinValeursnbMaxValeurs]type

attribut_deacuteriveacutetype

attribut_composeacute

  - sous-attribut1type

  - sous-attribut2type

  -

Contenus annexes

39Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Repreacutesentation dattributs en UML

Dans cet exemple les attributs Nom Preacutenom sont de type lun de 20 caractegraveres et lautre de 10 stringtandis que DateNaissance est de type et Age de type Preacutenom est un attribut multivalueacute ici date integerune personne peut avoir de 1 agrave 3 preacutenoms Age est un attribut deacuteriveacute il est calculeacute par une fonction sur DateNaissance

Meacutethodes (cf p39)

Composition (cf p5)

gt Meacutethodes

Une meacutethode (ou opeacuteration) est une fonction associeacutee agrave une classe dobjet qui permet dagir sur les objets de la classe ou qui permet agrave ces objets de renvoyer des valeurs (calculeacutees en fonction de paramegravetres)

1 methode(paramegravetres)type

Pour la modeacutelisation des bases de donneacutees les meacutethodes sont surtout utiliseacutees pour repreacutesenter des donneacutees calculeacutees (agrave linstar des attributs deacuteriveacutees) ou pour mettre en exergue des fonctions importantes du systegraveme cible Seules les meacutethodes les plus importantes sont repreacutesenteacutees lapproche est moins systeacutematique quen modeacutelisation objet par exemple

Lors de la transformation du modegravele conceptuel UML en modegravele logique relationnel les meacutethodes ne Leur repeacuterage au niveau conceptuel sert donc surtout daide-seront geacuteneacuteralement pas impleacutementeacutees

meacutemoire pour limpleacutementation au niveau applicatif

Exemple La classe Personne

Compleacutement Voir aussi

Deacutefinition Meacutethode

Syntaxe

Remarque Meacutethodes et modeacutelisation de BD

Remarque Meacutethodes relationnel relationnel-objet

methode(paramegravetres)type

Contenus annexes

40Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Au contraire un modegravele logique relationnel-objet permettra limpleacutementation de meacutethodes directement associeacutees agrave des tables Leur repeacuterage au niveau conceptuel est donc encore plus important

Transformation des meacutethodes par des vues (cf p40)

gt Transformation des meacutethodes par des vues

Lorsquune meacutethode est speacutecifieacutee sur un diagramme UML pour une classe C si cette meacutethode est une fonction relationnelle (elle renvoie une unique valeur et elle peut ecirctre reacutesolue par une requecircte SQL) alors on creacutee une vue qui reprend les attributs de la classe C et ajoute des colonnes calculeacutees pour les meacutethodes

Les attributs deacuteriveacutes eacutetant apparenteacutes agrave des meacutethodes ils peuvent eacutegalement ecirctre geacutereacutes par des vues

gt Classe dassociation

On utilise la notation des classes dassociation lorsque lon souhaite ajouter des proprieacuteteacutes agrave une association

Notation dune classe dassociation en UML

On reacuteserve en geacuteneacuteral les classes dassociation aux associations NM

Il est toujours possible de reacuteduire une classe dassociation sur une association 1N en migrant ses attributs sur la classe cocircteacute N et cest en geacuteneacuteral plus lisible ainsi

Compleacutement

Meacutethode

Remarque Attributs deacuteriveacutes

Deacutefinition Classe dassociation

Syntaxe Notation dune classe dassociation en UML

Meacutethode

Contenus annexes

41Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

-

Emplois

Selon le standard UML une classe dassociation est une classe et agrave ce titre elle peut ecirctre mobiliseacutee dans dautres associations ou dans des heacuteritages Nous deacuteconseillons neacuteanmoins ces notations qui ont tendance agrave complexifier la lecture et la transformation du diagramme

Nous conseillons donc de ne jamais associer une classe dassociation

gt Transformation des attributs

Pour chaque attribut eacuteleacutementaire et monovalueacute dune classe

on creacutee un attribut correspondant

Attribut

Classe1(ab)

Pour chaque attribut composite comprenant N sous-attributs dune classe

on creacutee N attributs correspondantsdont les noms sont la concateacutenation du nom de lattribut composite avec celui du sous-attribut

Exemple Exemple de classe dassociation

Conseil

Meacutethode Attributs simples

Meacutethode Attributs composites

Contenus annexes

42Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- - - -

Attribut composeacute

Classe1(ab_b1b_b2)

Pour chaque attribut multivalueacute b dune classe C

on creacutee une nouvelle relation RBqui comprend un attribut monovalueacute correspondant agrave bplus la cleacute de la relation repreacutesentant C la cleacute de RB est la concateacutenation des deux attributs

Attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Dans le cas ougrave le nombre maximum de est fini et petit on peut eacutegalement adopter la transformation b

suivante Classe1(ab1b2b3b4b5b6b7b8b9b10)

Si le nombre dattributs est infini ( ) cest impossible sil est trop grand ce nest pas souhaitableb[1]

On combine les regravegles eacutenonceacutees pour les attributs composeacutes et pour les attributs multivalueacutes

Attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Transformation des compositions (cf p42)

Meacutethode Attributs multivalueacutes

Meacutethode Attributs multivalueacutes (meacutethode alternative)

Meacutethode Attributs composeacutes multivalueacutes

Rappel Voir aussi

Contenus annexes

43Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

gt Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Compleacutement Attributs multivalueacutes et composeacutes

Contenus annexes

44Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

Rappel Voir aussi

Rappel

Meacutethode

Contenus annexes

45Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p48)

gt Transformation des associations 1N

Pour chaque association binaire de type 1N

on ajoute agrave la relation cocircteacute N une cleacute eacutetrangegravere vers la relation cocircteacute 1

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Meacutethode

Contenus annexes

46Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Association 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Contrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p46)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

R1

Compleacutement

Rappel

Meacutethode

Contenus annexes

47Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p47)

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Deacutefinition Projection

Contenus annexes

48Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Deacutefinition Projection

Contenus annexes

49Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Transformation des classes dassociation

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de lassociation NM

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Meacutethode Classe dassociation NM

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Quelques eacuteleacutements de stylistique UML

26

-

- -

-

-

-

- - -

- - - -

1

2

3

5 Synthegravese sur la modalisation UML et relationnelle51 Quelques eacuteleacutements de stylistique UML

Toutes les associations doivent ecirctre nommeacutees (sauf composition heacuteritage agreacutegation)Ne pas utiliser de nom geacuteneacuterique pour les Classes comme Entiteacute Classe Objet TrucEacuteviter les noms geacuteneacuteriques pour les associations (comme est associeacute agrave)Attention au sens des compositions et agreacutegation le losange est cocircteacute ensemble et noubliez pas les cardinaliteacutes notamment cocircteacute parties

Nutilisez pas le souligneacute ni les en UML pour identifier les cleacutes preacutefeacuterez la contrainte keyPreacutefeacuterez lheacuteritage aux booleacuteens de typage en UMLLes attributs deacuteriveacutes sont reacuteserveacutes aux deacuterivations simples (des attributs de la mecircme classe) si cest plus complexe preacutefeacuterez des meacutethodes (et dans le doute preacutecisez les modes de calcul sur le scheacutema ou dans une note agrave part)Donnez des exemples de contenu lorsque ce nest pas eacutevident (lorsque le couple nom dattribut et type ne permet pas de faccedilon eacutevidente de comprendre de quoi lon parle)Inutile de deacuteclarer le type booleacuteen en UML utilisez-le directement comme un type de donneacutees connu

Si tous vos heacuteritages sont exclusifs notez-le agrave part pour alleacuteger votre scheacutema (et eacuteviter labondance de XOR)

52 Attention aux cleacutes artificielles

en UML on ne pose jamais de cleacutes artificiellesen relationnel on pose rarement des cleacute artificielles sauf dans le cas de cleacutes eacutetrangegraveres vraiment trop compliqueacuteesen SQL on peut poser des cleacutes artificielles si on a une bonne raison (ce nest donc pas systeacutematique et cest agrave justifier)

On najoutera pas de cleacute artificielle en UML au moment de la modeacutelisation conceptuelle des donneacutees

Formellement en UML la notion de cleacute nexiste pas (contrairement agrave l ) elle est ajouteacutee par les E-A

pratiquants des BD

Logiquement on a pas besoin de cette notion en UML les cleacutes artificielles servent en relationnel et dans certains cas uniquementPratiquement cela peut conduire agrave des situations absurdes (comme enlever au niveau logique des cleacutes artificielles ajouteacutees au niveau conceptuel)

Attention

Conseil

Compleacutement

Fondamental

Cleacutes artificielles et niveau conceptuel

Bibliographie commenteacutee sur la modeacutelisation UML

27

-

-

- -

-

- -

-

-

3

4

5

si on fait du non-relationnel on ne doit pas ajouter de cleacutes artificielles dans certains cas (limbrication typiquement) cela arrive mecircme en relationnel avec la transformation de lheacuteritage (dans certains cas toujours)

Meacutethodologiquement il faut se concentrer agrave chaque phase sur ce qui est important donc au moment du MCD on traduit les besoins on repegravere les contraintes explicites (cleacute uniciteacute non nulliteacute) sans se preacuteoccuper de ce qui sera rendu neacutecessaire par la suite par la modeacutelisation relationnelle (les cleacutes eacutetrangegraveres par exemple) ou limpleacutementation (loptimisation par exemple) Agrave chaque jour suffit sa peine Peacutedagogiquement enfin les deacutebutants ont tendance (agrave cause des environnements de conception graphique comme phpMyAdmin notamment) agrave systeacutematiser les cleacutes artificielles en SQL (on pourrait en discuter) mais eacutegalement agrave ne pas faire le travail de recherche des cleacutes naturelles (au niveau relationnel notamment ce qui est une faute de modeacutelisation) Donc au plus tard on fait intervenir les cleacutes artificielles au plus on a une chance de penser aux cleacutes naturelles

Soit le modegravele relationnel suivant

1 Etu (id numEtu) avec numEtu cleacute 2 UV (id codeUv) avec codeUv cleacute3 Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

La question qui permet dafficher la liste des eacutetudiants (numEtu) avec leurs UVs (codeUv) neacutecessite une jointure des cleacutes artificielles Un modegravele sans ces cleacutes artificielles aurait eacuteteacute plus performant pour agrave causereacutepondre agrave cette question puisque toutes les informations se trouvent dans la relation Inscriptions

1 Etu (numEtu) 2 UV (codeUv) 3 Inscriptions (uv=gtUV etu=gtEtu)

Ne soyez pas systeacutematiqueIl est en effet freacutequent dans un projet reacuteel dadopter des cleacutes artificielles presque systeacutematiquement vous pourrez le faire en connaissance de cause quand vous aurez bien compris pourquoi cest inteacuteressant et quand ccedila ne lest pasLes cleacutes artificielles sont inteacuteressantes pour autre chose que les performances (leacutevolutiviteacute par exemple choisissez-les quand vous savez pourquoi)Les cleacutes artificielles ne dispensent pas de rechercher les cleacutes naturelles Les cleacutes artificielles ne sont pas la seule faccedilon doptimiser une base de donneacutees (indexation deacutenormalisation)

53 Bibliographie commenteacutee sur la modeacutelisation UML

Il existe de nombreux outils de modeacutelisation UML On pourra citer

logiciel Open Source et multi-plateformes facile dusage (qui marche neacuteanmoins mieux sur Linux Dia

que sur Windows)

(version gratuite)Objecteering

Cleacutes artificielles et optimisation est-il toujours plus performant dutiliser des cleacutes artificielles

Conseil

Compleacutement Outils de modeacutelisation UML

Etu (id numEtu) avec numEtu cleacute

UV (id codeUv) avec codeUv cleacute

Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

Etu (numEtu)

UV (codeUv)

Inscriptions (uv=gtUV etu=gtEtu)

Bibliographie commenteacutee sur la modeacutelisation UML

28

- - - - - -

- - - - - -

Agrave voir eacutegalement en Open Source ou (non testeacute par lauteur)ArgoUML EclipseUML

UML2 en action

Pour un aperccedilu plus deacutetailleacute des possibiliteacutes dexpression du diagramme de classe UML lire le chapitre 7 Deacuteveloppement du modegravele statique (pages 133 agrave 163)

On pourra notamment y trouver

Lassociation dagreacutegationLes proprieacuteteacutes dassociationLexpression de rocircles dans les associationsLes attributs de classeLes qualificatifsLes opeacuterations (ou meacutethodes)

Le chapitre donne de plus des conseils meacutethodologiques pour la conception (voir en particulier la synthegravese page 163)

On pourra eacutegalement y trouver

Des principes de choix de modeacutelisation entre attributs et classes et sur la segmentation des classesDes principes de seacutelection des attributs (redondance avec les associations avec les classes etc)Des principes de seacutelection des associationsDes principes de choix de cardinaliteacute (notamment pour la gestion dhistorisation)Des principes de seacutelection des relations de geacuteneacuteralisation (heacuteritage)Des principes dintroduction de meacutetaclasses (type)s

U M L e n Franccedilais

Une tregraves bonne reacutefeacuterence en ligne sur la modeacutelisation UML avec des cours des liens vers la norme etc

Le contenu deacutepasse tregraves largement lusage dUML pour la modeacutelisation de BD (et ne fait dailleurs pas de reacutefeacuterence preacutecise agrave ce sous-ensemble particulier)

On pourra consulter en particulier le chapitre sur les diagrammes de classe httpumlfreefrcoursi-p14html

UML en 5 eacutetapes

On consultera en particulier le tutoriel sur les diagrammes de classe httpdeveloppeurjournaldunetcomtutorielcpt010607cpt_umlintroshtml

Cinq petits conseils pour un scheacutema UML efficace

Compleacutement Modeacutelisation UML

Compleacutement Reacutefeacuterence UML en ligne

Compleacutement Tutoriel sur la modeacutelisation UML

Compleacutement Conseils

Synthegravese Les diagrammes de modeacutelisation conceptuelle

29

-

-

- -

-

- -

-

-

- -

-

- - - -

-

-

(chapitre 3)UML2 par la pratique

Des explications exemples et eacutetudes de cas

54 Synthegravese Les diagrammes de modeacutelisation conceptuelle

Un modegravele conceptuel peut ecirctre repreacutesenteacute sous forme de diagramme E-A ou sous forme de diagramme de classe UML

Classe ou Entiteacute

Attribut ou Proprieacuteteacute

TypeacuteMulti-valueacuteComposeacuteDeacuteriveacute

Meacutethode

ParamegravetresValeur de retour

Association

Association

VerbeCardinaliteacute

Heacuteritage

Heacuteritage dattributsHeacuteritage de meacutethodes

Composition (ou entiteacute faible)

Cardinaliteacute

Compleacutement Pratique

Exercices

30

-

-

-

-

-

-

-

1 2

1

1 Exercice Lab III[20 min]

Description du problegraveme

Un laboratoire souhaite geacuterer les meacutedicaments quil conccediloit

Un meacutedicament est deacutecrit par un nom qui permet de lidentifier En effet il nexiste pas deux meacutedicaments avec le mecircme nom Un meacutedicament comporte une description courte en franccedilais ainsi quune description longue en latin On gegravere aussi le conditionnement du meacutedicament cest agrave dire le nombre de pilules par boicircte (qui est un nombre entier)Agrave chaque meacutedicament on associe une liste deacutedieacutee de contre-indications geacuteneacuteralement plusieurs parfois aucune Les contre-indications sont trieacutees par ordre dimportance Lordre est total est strict pour un meacutedicament donc chaque contre-indication possegravede une importance et il nexiste pas deux contre-indications associeacutees au mecircme meacutedicament avec la mecircme importanceTout meacutedicament possegravede au moins un composant souvent plusieurs Un composant est identifieacute par un code unique et possegravede un intituleacute Tout composant peut intervenir dans la fabrication de plusieurs meacutedicaments Il existe des composants qui ne sont pas utiliseacutes pour fabriquer des meacutedicaments et que lon veut quand mecircme geacuterer

Donneacutees de test

Afin de mateacuterialiser notre base de donneacutees nous obtenons les descriptions suivantes

Le a pour description courte et pour description longue Chourix Meacutedicament contre la chute des chouxlaquo raquoVivamus fermentum semper porta Nunc diam velit adipiscing ut tristique vitae sagittis vel odio laquo

Il est conditionneacute en boicircte de 13Maecenas convallis ullamcorper ultricies Curabitur ornare raquoSes contre-indications sont

Le Chourix ne doit jamais ecirctre pris apregraves minuitLe Chourix ne doit jamais ecirctre mis au contact avec de leau

Ses composants sont le et le HG79 SN50Le a pour description courte et pour Tropas Meacutedicament contre les dysfonctionnements intellectuelslaquo raquodescription longue Suspendisse lectus leo consectetur in tempor sit amet placerat quis neque Etiam laquo

Il est conditionneacute en boicircte de 42luctus porttitor lorem sed suscipit est rutrum non raquoSes contre-indications sont

Le Tropas doit ecirctre gardeacute agrave labri de la lumiegravere du soleil

Son unique composant est le HG79Les composants existants sont

HG79 Vif-argent alleacutegeacute

ExercicesII

Exercice Eacutetudiants et UVs (introduction)

31

- - -

- - HG81 Vif-argent alourdi

SN50 Pur eacutetain

Question 1

Question 2

Question 3

2 Exercice Eacutetudiants et UVs (introduction)[20 min]

On dispose du scheacutema UML ci-apregraves qui deacutecrit des eacutetudiants des UV les notes obtenues par les eacutetudiants agrave ces UV et les diplocircmes dorigine de ces eacutetudiants

Eacutetudiants et UVs

key deacutesigne des cleacutes candidates ici toutes les cleacutes ne sont composeacutees que dun seul attributlocal key deacutesigne une cleacute localeun semestre est de la forme PYYYY ou AYYYY (ougrave YYYY deacutesigneacute une anneacutee sur 4 chiffre) exemple A2013 P2014

Rappel Notion de cleacute locale dans classes dassociation (cf p49)

Effectuez le modegravele conceptuel en UML de ce problegraveme

Indices

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans deacutedieacuteeles donneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition

[ ]solution ndeg4 [ ] p56

En mobilisant les regravegles adeacutequates proposer un modegravele logique de donneacutees correspondant en relationnel Le repeacuterage des domaines et des cleacutes est obligatoire

[ ]solution ndeg5 [ ] p57

Dessiner des tableaux remplis avec les donneacutees fournies en exemple afin de montrer que le modegravele fonctionne selon le besoin exprimeacute initialement On pourra mettre le premier mot seulement des descriptions pour gagner du temps

[ ]solution ndeg6 [ ] p57

Exercice Super-heacuteros relationnels I

32

-

-

Question

3 Exercice Super-heacuteros relationnels I[20 min]

La gamme de super-heacuteros GARVEL veut reacutealiser la base de donneacutees de leurs figurines articuleacutees La socieacuteteacute a fait reacutealiser un modegravele UML qui doit servir de point de deacutepart agrave la mise en œuvre

Modegravele UML Figurines GARVEL

Question

4 Exercice Objets Numeacuteriques Libres[30 min]

Lassociation ONL (Objets Numeacuteriques Libres) est une association de promotion des logiciels libres Elle souhaite exposer sur un site Internet une liste de logiciels libres Ce site sera adosseacute agrave une base de donneacutees relationnelle ou relationnel-objet La premiegravere eacutetape de sa deacutemarche est de reacutealiser un modegravele conceptuel repreacutesentant ce quelle souhaite faire

La base de donneacutees permet de geacuterer des applicationsLes applications sont identifieacutees par leur nom (LibreOffice Gimp) et leur version (10 21) et comportent une description courte et une URL Tous les attributs sont obligatoires Chaque application a une URL uniqueLa base de donneacutees permet de geacuterer des librairies

Traduire le scheacutema en modegravele logique relationnel ( )MLD1

On choisira obligatoirement les cleacutes primaires parmi celles neacutecessitant le plus petit nombre de bits possible pour leur codage

[ ]solution ndeg7 [ ] p57

Transformer le modegravele UML en modegravele relationnel (justifier les passages non triviaux en particulier la relation dheacuteritage)

[ ]solution ndeg8 [ ] p58

Exercice Objets Numeacuteriques Libres

33

-

-

-

-

-

-

-

-

-

-

-

-

Les librairies sont des logiciels mais pas des applications Elles ont les mecircmes attributs que les applications (nom version description courte URL) mais les URL ne sont pas neacutecessairement uniques Les applications peuvent deacutependre de librairies ou dautres applications et les librairies peuvent deacutependre dautres librairies (mais pas dune application)La base de donneacutees permet de geacuterer des composantsLes composants sont inteacutegreacutes agrave une application ou librairie Les composants ont un code interne agrave lapplication ou la librairie quil servent une version et une description courte et une URL Le code et le numeacutero de version permettent didentifier localement le composant au sein de la librairie ou de lapplication la description courte et lURL sont optionnellesLa base de donneacutees permet de geacuterer des licencesLes applications librairies et composants sont attacheacutes agrave une ou plusieurs licences identifieacutees par leur nom (GPL MPL) leur version et leur langue et comportant le texte inteacutegral de la licence Les versions des logiciels et licences sont de type numeacutero de licence majeur point numeacutero de licence mineur comme 10 ou 22La base de donneacutees permet de geacuterer des cateacutegoriesChaque logiciel est rangeacute dans une cateacutegorie principale et plusieurs cateacutegories secondaires Exemple de cateacutegories bureautique dessin multimeacutedia physique

Exemple (factice) de donneacutees

Applications

Scenari 41 une chaicircne eacuteditoriale XML httpscenariorg deacutepend de Libreoffice 43 et de ImageMagick 68Libreoffice 43 une suite bureautique WYSIWYG httplibreofficeorg

Librairie

ImageMagick 68 permet de creacuteer de convertir de modifier et dafficher des images http imagemagickorg

Composant

impng 02 est un composant de ImageMagick 68 permet de compresser une image au format PNG

Toutes ces applications librairies et composants sont disponibles sous une licence LGPL 30 et GPL 30 franccedilaisesToutes ces applications et librairies sont rangeacutees dans la cateacutegorie principale document Scenari est rangeacute dans la cateacutegorie secondaire Eacutedition WYSIWYM Libreoffice dans la cateacutegorie secondaire Bureautique ImageMagick dans la cateacutegorie secondaire Multimeacutedia

Question

Reacutealiser un MCD en UML[ ]solution ndeg9 [ ] p58

Devoirs

34

1 Exercice Arbre de scegravene 3D[30 minutes]

On souhaite pouvoir geacuterer les diffeacuterents eacuteleacutements composant des scegravenes 3D dans une base de donneacutees Une scegravene contient des objets qui eux-mecircmes peuvent appartenir agrave plusieurs scegravenes (au moins une) mais il ne peut y avoir plusieurs fois le mecircme objet dans une mecircme scegravene Dans chaque scegravene les objets peuvent ecirctre visibles ou invisibles Les scegravenes et les objets sont identifieacutes de maniegravere unique par un nom Une scegravene peut ecirctre active ou inactive Un objet a comme proprieacuteteacute une position dans lespace repreacutesenteacutee par un vecteur de reacuteels agrave trois composantes (x y z) Les objets sont organiseacutes de maniegravere hieacuterarchique un objet peut ecirctre parent de plusieurs objets et chaque objet peut avoir au plus un parent Des scripts peuvent ecirctre associeacutes agrave un objet ou agrave une scegravene (agrave lun ou agrave lautre mais pas aux deux) Un script est identifieacute de maniegravere unique par un nom et possegravede eacutegalement un attribut permettant de connaicirctre son eacutetat (actif ou inactif) Un personnage est un objet particulier qui possegravede des animations Une animation est relative agrave un personnage et est identifieacutee de maniegravere locale par un nom Agrave un objet est associeacute un maillage et celui-ci peut ecirctre utiliseacute par plusieurs objets Un maillage est identifieacute de maniegravere unique par un nom et est composeacute de plusieurs eacuteleacutements Chaque eacuteleacutement est relatif agrave un maillage et est identifieacute de maniegravere locale par un numeacutero Il existe exactement trois types deacuteleacutement des nœuds des arrecirctes et des faces Une face est deacutelimiteacutee par trois arrecirctes et chaque arrecircte est deacutelimiteacutee par deux nœuds Plusieurs arrecirctes peuvent partager un mecircme nœud et plusieurs faces peuvent partager une mecircme arrecircte Afin deacutevaluer la complexiteacute dune scegravene on souhaite pouvoir calculer le nombre de faces afficheacutees pour une scegravene donneacutee (cest-agrave-dire la somme du nombre de faces du maillage associeacute aux objets visibles de la scegravene) Un maillage possegravede plusieurs mateacuteriaux identifieacutes de maniegravere unique par un nom Un mateacuteriau peut ecirctre associeacute agrave plusieurs maillages Un mateacuteriau est caracteacuteriseacute par une couleur deacutefinie par un vecteur dentiers agrave quatre composantes rouge vert bleu alpha Un mateacuteriau peut posseacuteder une texture et celle-ci peut ecirctre utiliseacutee par plusieurs mateacuteriaux Une texture est identifieacutee de maniegravere unique par un nom et possegravede comme attribut une image

Question 1

Question 2

DevoirsIII

Proposez une clarification de ce problegraveme On pourra reclasser les informations par grande cateacutegorie scegravene objets scripts

Eacutetablissez un modegravele conceptuel en UML de ce problegraveme

Compleacutement Exercices de modeacutelisation suppleacutementaire

35

1 Exercice Appartements agrave louer[30 min]

Une agence dimmobilier (ventes et locations) veut geacuterer son parc dappartements dans une base de donneacutees Chaque appartement possegravede plusieurs piegraveces qui peuvent ecirctre des piegraveces dhabitation des piegraveces de rangement ou des commoditeacutes

Chaque piegravece a une superficie un nombre de prises eacutelectriques et des meubles Pour ces derniers on veut enregistrer le nom du modegravele et le type (chaise lit four etc) Rien nempecircche quune piegravece comporte plusieurs meubles identiques (par exemple plusieurs chaises PIN IQUEA) Les piegraveces dhabitation ont une ou plusieurs fenecirctres les piegraveces de rangement ont une ou plusieurs eacutetagegraveres et une surface de rangement utile totale On veut aussi savoir dans quelles piegraveces de rangement se situent les tableaux eacutelectriques de lappartement Finalement les piegraveces commoditeacutes peuvent ecirctre de trois types cuisine toilette ou salle de bain

Lagence veut aussi enregistrer les portes entre les diffeacuterentes piegraveces Une porte peut ecirctre agrave simple battant double battant coulissante ou une simple ouverture

Chaque appartement a une adresse une superficie totale (qui est la somme des superficies des piegraveces) et un type qui est la lettre T suivie du nombre de piegraveces dhabitation de lappartement Pour un appartement donneacute chaque piegravece est identifieacutee par un numeacutero (commenccedilant au numeacutero 1)

Lagence veut eacutegalement enregistrer le quartier ougrave se trouve lappartement auquel est lieacute un prix par megravetre carreacute Finalement elle veut garder un historique de lhistoire de lappartement les peacuteriodes pour lesquelles il est libre occupeacute en travaux ou vendu

Question

2 Exercice Objectifs[40 min]

Vous prenez la preacutesidence de lassociation Objectifs dont lobjet est daider ses eacutetudiants membres agrave mener des projets dans le cadre de leurs eacutetudes

Compleacutement Exercices de modeacutelisation suppleacutementaire

IV

Reacutealisez le diagramme UML reacutepondant aux besoins de cette agence[ ]solution ndeg10 [ ] p59

Exercice Objectifs

36

- - -

-

-

- - -

Vous constatez en arrivant dans lassociation que personne ne sait exactement quels sont les projets en cours ni qui fait quoi dans les projets Vous ne parvenez pas non plus agrave obtenir une liste exacte des partenaires sur lesquels lassociation peut compter La seule chose sur laquelle vous parvenez agrave mettre la main est un fichier tableur vaguement agrave jour

Vous deacutecidez quil est plus que temps de mettre en place une base de donneacutees afin dassurer la bonne gestion des informations les plus importantes pour lassociation Vous vous attachez pour cela agrave reacutealiser une analyse des besoins

Analysez les documents ci-apregraves

Etat des projets

Eacutetat des projets de lassociation Objectifs

Recueil de besoins

Agrave partir de leacutetude du fonctionnement actuel de lassociation vous relevez les choses importantes agrave geacuterer suivantes

Les membres de lassociation geacuteneacuteralement identifieacutes par leur preacutenomLes projets geacutereacutes par lassociation avec des dates de deacutebut et de fin preacutecises et un chef de projetLe deacutetail des tacircches de chaque projet avec leurs dates de deacutebut et de fin aussi et la liste de tous les membres qui y participentLa liste des partenaires des projets avec leur rocircle preacutecis pour chacun des projets auxquels ils participent

Afin de mieux geacuterer les attributions des projets il serait eacutegalement inteacuteressant de creacuteer une liste des speacutecialiteacutes correspondant agrave ce qui ce fait dans lassociation et daffecter une speacutecialiteacute agrave chaque membre ainsi quune agrave chaque projet pour voir si ce sont bien les membres les mieux adapteacutes qui travaille sur les projets

Recueil de donneacutees

Les discussions avec les anciens membres de lassociation vous apprennent les choses suivantes

Lassociation a termineacute de geacuterer les trois projets Comeacutedie Musicale geacutereacutee par Nathalie sur les trois premiers mois du semestre dautomne 1001 Science en fecircte geacutereacutee par Pierre sur tout le semestre de printemps 1003 et Nuit du picolo geacutereacutee par Julien en novembre 1001Les speacutecialiteacutes recenseacutees pour le moment sont Ville Universiteacute Sport Entreprise Culture InternationalIl faut au moins dix membres agrave lassociation (sinon elle ferme) recruter ceux qui manquentAidez lassociation agrave diviser ses projets en tacircches

Exercice Objectifs

37

- Les partenaires suivants aident ou ont aideacute lassociation la mairie pour la comeacutedie musicale et la science en fecircte qui apporte un soutien financier le ministegravere de la culture qui apporte son soutien logistique agrave la science en fecircte lassociation des commerccedilants de la ville qui apporte son soutien publicitaire agrave la comeacutedie musicale 1664 qui offre ses biegraveres agrave moitieacute prix pour la nuit du Picolo

Question 1

Question 2

Question 3

Afin de preacuteparer une analyse des besoins sommaire listez les donneacutees que vous devrez geacuterer agrave laide des documents et recueils de discussion agrave votre disposition Faites des hypothegraveses lorsque les donneacutees sont incomplegravetes ou incoheacuterentes

[ ]solution ndeg11 [ ] p59

Reacutealiser le MCD en UML et en E-A agrave partir des donneacutees preacutepareacutees dans la question preacuteceacutedente[ ]solution ndeg12 [ ] p60

Reacutealiser le MLD en relationnel en traduisant votre MCD[ ]solution ndeg13 [ ] p61

Contenus annexes

38Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

- - -

gt Attributs

Un attribut est une information eacuteleacutementaire qui caracteacuterise une classe et dont la valeur deacutepend de lobjet instancieacute

Le domaine des valeurs que peut prendre lattribut est fixeacute a prioriUn attribut est typeacute

Il peut prendre plusieurs valeurs distinctes dans son domaineUn attribut peut ecirctre multivalueacute Sa valeur alors est une fonction sur dautres attributs de la classeUn attribut peut ecirctre deacuteriveacute

(ou composite) Il joue alors le rocircle dun groupe dattributs (par Un attribut peut ecirctre composeacuteexemple une adresse peut ecirctre un attribut composeacute des attributs numeacutero type de voie nom de la voie) Cette notion renvoie agrave la notion de variable de type dans les langages de Record

programmation classiques

En UML on preacutefegravere lusage de meacutethodes aux attributs deacuteriveacutes On utilisera toujours des meacutethodes degraves que la valeur de lattribut deacuteriveacute deacutepend dautres attributs exteacuterieurs agrave sa classeEn UML on preacutefegravere lusage de compositions aux attributs composeacutes On utilisera toujours des compositions pour les attributs composeacutes et multivalueacutes

1 attributtype2 attribut_multivalueacute[nbMinValeursnbMaxValeurs]type3 attribut_deacuteriveacutetype4 attribut_composeacute5   - sous-attribut1type6   - sous-attribut2type7   -

Contenus annexes

Deacutefinition Attribut

Attention On utilise peu les attributs deacuteriveacutes et composeacutes en UML

Syntaxe

attributtype

attribut_multivalueacute[nbMinValeursnbMaxValeurs]type

attribut_deacuteriveacutetype

attribut_composeacute

  - sous-attribut1type

  - sous-attribut2type

  -

Contenus annexes

39Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Repreacutesentation dattributs en UML

Dans cet exemple les attributs Nom Preacutenom sont de type lun de 20 caractegraveres et lautre de 10 stringtandis que DateNaissance est de type et Age de type Preacutenom est un attribut multivalueacute ici date integerune personne peut avoir de 1 agrave 3 preacutenoms Age est un attribut deacuteriveacute il est calculeacute par une fonction sur DateNaissance

Meacutethodes (cf p39)

Composition (cf p5)

gt Meacutethodes

Une meacutethode (ou opeacuteration) est une fonction associeacutee agrave une classe dobjet qui permet dagir sur les objets de la classe ou qui permet agrave ces objets de renvoyer des valeurs (calculeacutees en fonction de paramegravetres)

1 methode(paramegravetres)type

Pour la modeacutelisation des bases de donneacutees les meacutethodes sont surtout utiliseacutees pour repreacutesenter des donneacutees calculeacutees (agrave linstar des attributs deacuteriveacutees) ou pour mettre en exergue des fonctions importantes du systegraveme cible Seules les meacutethodes les plus importantes sont repreacutesenteacutees lapproche est moins systeacutematique quen modeacutelisation objet par exemple

Lors de la transformation du modegravele conceptuel UML en modegravele logique relationnel les meacutethodes ne Leur repeacuterage au niveau conceptuel sert donc surtout daide-seront geacuteneacuteralement pas impleacutementeacutees

meacutemoire pour limpleacutementation au niveau applicatif

Exemple La classe Personne

Compleacutement Voir aussi

Deacutefinition Meacutethode

Syntaxe

Remarque Meacutethodes et modeacutelisation de BD

Remarque Meacutethodes relationnel relationnel-objet

methode(paramegravetres)type

Contenus annexes

40Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Au contraire un modegravele logique relationnel-objet permettra limpleacutementation de meacutethodes directement associeacutees agrave des tables Leur repeacuterage au niveau conceptuel est donc encore plus important

Transformation des meacutethodes par des vues (cf p40)

gt Transformation des meacutethodes par des vues

Lorsquune meacutethode est speacutecifieacutee sur un diagramme UML pour une classe C si cette meacutethode est une fonction relationnelle (elle renvoie une unique valeur et elle peut ecirctre reacutesolue par une requecircte SQL) alors on creacutee une vue qui reprend les attributs de la classe C et ajoute des colonnes calculeacutees pour les meacutethodes

Les attributs deacuteriveacutes eacutetant apparenteacutes agrave des meacutethodes ils peuvent eacutegalement ecirctre geacutereacutes par des vues

gt Classe dassociation

On utilise la notation des classes dassociation lorsque lon souhaite ajouter des proprieacuteteacutes agrave une association

Notation dune classe dassociation en UML

On reacuteserve en geacuteneacuteral les classes dassociation aux associations NM

Il est toujours possible de reacuteduire une classe dassociation sur une association 1N en migrant ses attributs sur la classe cocircteacute N et cest en geacuteneacuteral plus lisible ainsi

Compleacutement

Meacutethode

Remarque Attributs deacuteriveacutes

Deacutefinition Classe dassociation

Syntaxe Notation dune classe dassociation en UML

Meacutethode

Contenus annexes

41Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

-

Emplois

Selon le standard UML une classe dassociation est une classe et agrave ce titre elle peut ecirctre mobiliseacutee dans dautres associations ou dans des heacuteritages Nous deacuteconseillons neacuteanmoins ces notations qui ont tendance agrave complexifier la lecture et la transformation du diagramme

Nous conseillons donc de ne jamais associer une classe dassociation

gt Transformation des attributs

Pour chaque attribut eacuteleacutementaire et monovalueacute dune classe

on creacutee un attribut correspondant

Attribut

Classe1(ab)

Pour chaque attribut composite comprenant N sous-attributs dune classe

on creacutee N attributs correspondantsdont les noms sont la concateacutenation du nom de lattribut composite avec celui du sous-attribut

Exemple Exemple de classe dassociation

Conseil

Meacutethode Attributs simples

Meacutethode Attributs composites

Contenus annexes

42Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- - - -

Attribut composeacute

Classe1(ab_b1b_b2)

Pour chaque attribut multivalueacute b dune classe C

on creacutee une nouvelle relation RBqui comprend un attribut monovalueacute correspondant agrave bplus la cleacute de la relation repreacutesentant C la cleacute de RB est la concateacutenation des deux attributs

Attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Dans le cas ougrave le nombre maximum de est fini et petit on peut eacutegalement adopter la transformation b

suivante Classe1(ab1b2b3b4b5b6b7b8b9b10)

Si le nombre dattributs est infini ( ) cest impossible sil est trop grand ce nest pas souhaitableb[1]

On combine les regravegles eacutenonceacutees pour les attributs composeacutes et pour les attributs multivalueacutes

Attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Transformation des compositions (cf p42)

Meacutethode Attributs multivalueacutes

Meacutethode Attributs multivalueacutes (meacutethode alternative)

Meacutethode Attributs composeacutes multivalueacutes

Rappel Voir aussi

Contenus annexes

43Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

gt Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Compleacutement Attributs multivalueacutes et composeacutes

Contenus annexes

44Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

Rappel Voir aussi

Rappel

Meacutethode

Contenus annexes

45Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p48)

gt Transformation des associations 1N

Pour chaque association binaire de type 1N

on ajoute agrave la relation cocircteacute N une cleacute eacutetrangegravere vers la relation cocircteacute 1

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Meacutethode

Contenus annexes

46Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Association 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Contrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p46)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

R1

Compleacutement

Rappel

Meacutethode

Contenus annexes

47Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p47)

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Deacutefinition Projection

Contenus annexes

48Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Deacutefinition Projection

Contenus annexes

49Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Transformation des classes dassociation

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de lassociation NM

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Meacutethode Classe dassociation NM

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Bibliographie commenteacutee sur la modeacutelisation UML

27

-

-

- -

-

- -

-

-

3

4

5

si on fait du non-relationnel on ne doit pas ajouter de cleacutes artificielles dans certains cas (limbrication typiquement) cela arrive mecircme en relationnel avec la transformation de lheacuteritage (dans certains cas toujours)

Meacutethodologiquement il faut se concentrer agrave chaque phase sur ce qui est important donc au moment du MCD on traduit les besoins on repegravere les contraintes explicites (cleacute uniciteacute non nulliteacute) sans se preacuteoccuper de ce qui sera rendu neacutecessaire par la suite par la modeacutelisation relationnelle (les cleacutes eacutetrangegraveres par exemple) ou limpleacutementation (loptimisation par exemple) Agrave chaque jour suffit sa peine Peacutedagogiquement enfin les deacutebutants ont tendance (agrave cause des environnements de conception graphique comme phpMyAdmin notamment) agrave systeacutematiser les cleacutes artificielles en SQL (on pourrait en discuter) mais eacutegalement agrave ne pas faire le travail de recherche des cleacutes naturelles (au niveau relationnel notamment ce qui est une faute de modeacutelisation) Donc au plus tard on fait intervenir les cleacutes artificielles au plus on a une chance de penser aux cleacutes naturelles

Soit le modegravele relationnel suivant

1 Etu (id numEtu) avec numEtu cleacute 2 UV (id codeUv) avec codeUv cleacute3 Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

La question qui permet dafficher la liste des eacutetudiants (numEtu) avec leurs UVs (codeUv) neacutecessite une jointure des cleacutes artificielles Un modegravele sans ces cleacutes artificielles aurait eacuteteacute plus performant pour agrave causereacutepondre agrave cette question puisque toutes les informations se trouvent dans la relation Inscriptions

1 Etu (numEtu) 2 UV (codeUv) 3 Inscriptions (uv=gtUV etu=gtEtu)

Ne soyez pas systeacutematiqueIl est en effet freacutequent dans un projet reacuteel dadopter des cleacutes artificielles presque systeacutematiquement vous pourrez le faire en connaissance de cause quand vous aurez bien compris pourquoi cest inteacuteressant et quand ccedila ne lest pasLes cleacutes artificielles sont inteacuteressantes pour autre chose que les performances (leacutevolutiviteacute par exemple choisissez-les quand vous savez pourquoi)Les cleacutes artificielles ne dispensent pas de rechercher les cleacutes naturelles Les cleacutes artificielles ne sont pas la seule faccedilon doptimiser une base de donneacutees (indexation deacutenormalisation)

53 Bibliographie commenteacutee sur la modeacutelisation UML

Il existe de nombreux outils de modeacutelisation UML On pourra citer

logiciel Open Source et multi-plateformes facile dusage (qui marche neacuteanmoins mieux sur Linux Dia

que sur Windows)

(version gratuite)Objecteering

Cleacutes artificielles et optimisation est-il toujours plus performant dutiliser des cleacutes artificielles

Conseil

Compleacutement Outils de modeacutelisation UML

Etu (id numEtu) avec numEtu cleacute

UV (id codeUv) avec codeUv cleacute

Inscriptions (id uv=gtUV etu=gtEtu) avec (uvetu) cleacute

Etu (numEtu)

UV (codeUv)

Inscriptions (uv=gtUV etu=gtEtu)

Bibliographie commenteacutee sur la modeacutelisation UML

28

- - - - - -

- - - - - -

Agrave voir eacutegalement en Open Source ou (non testeacute par lauteur)ArgoUML EclipseUML

UML2 en action

Pour un aperccedilu plus deacutetailleacute des possibiliteacutes dexpression du diagramme de classe UML lire le chapitre 7 Deacuteveloppement du modegravele statique (pages 133 agrave 163)

On pourra notamment y trouver

Lassociation dagreacutegationLes proprieacuteteacutes dassociationLexpression de rocircles dans les associationsLes attributs de classeLes qualificatifsLes opeacuterations (ou meacutethodes)

Le chapitre donne de plus des conseils meacutethodologiques pour la conception (voir en particulier la synthegravese page 163)

On pourra eacutegalement y trouver

Des principes de choix de modeacutelisation entre attributs et classes et sur la segmentation des classesDes principes de seacutelection des attributs (redondance avec les associations avec les classes etc)Des principes de seacutelection des associationsDes principes de choix de cardinaliteacute (notamment pour la gestion dhistorisation)Des principes de seacutelection des relations de geacuteneacuteralisation (heacuteritage)Des principes dintroduction de meacutetaclasses (type)s

U M L e n Franccedilais

Une tregraves bonne reacutefeacuterence en ligne sur la modeacutelisation UML avec des cours des liens vers la norme etc

Le contenu deacutepasse tregraves largement lusage dUML pour la modeacutelisation de BD (et ne fait dailleurs pas de reacutefeacuterence preacutecise agrave ce sous-ensemble particulier)

On pourra consulter en particulier le chapitre sur les diagrammes de classe httpumlfreefrcoursi-p14html

UML en 5 eacutetapes

On consultera en particulier le tutoriel sur les diagrammes de classe httpdeveloppeurjournaldunetcomtutorielcpt010607cpt_umlintroshtml

Cinq petits conseils pour un scheacutema UML efficace

Compleacutement Modeacutelisation UML

Compleacutement Reacutefeacuterence UML en ligne

Compleacutement Tutoriel sur la modeacutelisation UML

Compleacutement Conseils

Synthegravese Les diagrammes de modeacutelisation conceptuelle

29

-

-

- -

-

- -

-

-

- -

-

- - - -

-

-

(chapitre 3)UML2 par la pratique

Des explications exemples et eacutetudes de cas

54 Synthegravese Les diagrammes de modeacutelisation conceptuelle

Un modegravele conceptuel peut ecirctre repreacutesenteacute sous forme de diagramme E-A ou sous forme de diagramme de classe UML

Classe ou Entiteacute

Attribut ou Proprieacuteteacute

TypeacuteMulti-valueacuteComposeacuteDeacuteriveacute

Meacutethode

ParamegravetresValeur de retour

Association

Association

VerbeCardinaliteacute

Heacuteritage

Heacuteritage dattributsHeacuteritage de meacutethodes

Composition (ou entiteacute faible)

Cardinaliteacute

Compleacutement Pratique

Exercices

30

-

-

-

-

-

-

-

1 2

1

1 Exercice Lab III[20 min]

Description du problegraveme

Un laboratoire souhaite geacuterer les meacutedicaments quil conccediloit

Un meacutedicament est deacutecrit par un nom qui permet de lidentifier En effet il nexiste pas deux meacutedicaments avec le mecircme nom Un meacutedicament comporte une description courte en franccedilais ainsi quune description longue en latin On gegravere aussi le conditionnement du meacutedicament cest agrave dire le nombre de pilules par boicircte (qui est un nombre entier)Agrave chaque meacutedicament on associe une liste deacutedieacutee de contre-indications geacuteneacuteralement plusieurs parfois aucune Les contre-indications sont trieacutees par ordre dimportance Lordre est total est strict pour un meacutedicament donc chaque contre-indication possegravede une importance et il nexiste pas deux contre-indications associeacutees au mecircme meacutedicament avec la mecircme importanceTout meacutedicament possegravede au moins un composant souvent plusieurs Un composant est identifieacute par un code unique et possegravede un intituleacute Tout composant peut intervenir dans la fabrication de plusieurs meacutedicaments Il existe des composants qui ne sont pas utiliseacutes pour fabriquer des meacutedicaments et que lon veut quand mecircme geacuterer

Donneacutees de test

Afin de mateacuterialiser notre base de donneacutees nous obtenons les descriptions suivantes

Le a pour description courte et pour description longue Chourix Meacutedicament contre la chute des chouxlaquo raquoVivamus fermentum semper porta Nunc diam velit adipiscing ut tristique vitae sagittis vel odio laquo

Il est conditionneacute en boicircte de 13Maecenas convallis ullamcorper ultricies Curabitur ornare raquoSes contre-indications sont

Le Chourix ne doit jamais ecirctre pris apregraves minuitLe Chourix ne doit jamais ecirctre mis au contact avec de leau

Ses composants sont le et le HG79 SN50Le a pour description courte et pour Tropas Meacutedicament contre les dysfonctionnements intellectuelslaquo raquodescription longue Suspendisse lectus leo consectetur in tempor sit amet placerat quis neque Etiam laquo

Il est conditionneacute en boicircte de 42luctus porttitor lorem sed suscipit est rutrum non raquoSes contre-indications sont

Le Tropas doit ecirctre gardeacute agrave labri de la lumiegravere du soleil

Son unique composant est le HG79Les composants existants sont

HG79 Vif-argent alleacutegeacute

ExercicesII

Exercice Eacutetudiants et UVs (introduction)

31

- - -

- - HG81 Vif-argent alourdi

SN50 Pur eacutetain

Question 1

Question 2

Question 3

2 Exercice Eacutetudiants et UVs (introduction)[20 min]

On dispose du scheacutema UML ci-apregraves qui deacutecrit des eacutetudiants des UV les notes obtenues par les eacutetudiants agrave ces UV et les diplocircmes dorigine de ces eacutetudiants

Eacutetudiants et UVs

key deacutesigne des cleacutes candidates ici toutes les cleacutes ne sont composeacutees que dun seul attributlocal key deacutesigne une cleacute localeun semestre est de la forme PYYYY ou AYYYY (ougrave YYYY deacutesigneacute une anneacutee sur 4 chiffre) exemple A2013 P2014

Rappel Notion de cleacute locale dans classes dassociation (cf p49)

Effectuez le modegravele conceptuel en UML de ce problegraveme

Indices

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans deacutedieacuteeles donneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition

[ ]solution ndeg4 [ ] p56

En mobilisant les regravegles adeacutequates proposer un modegravele logique de donneacutees correspondant en relationnel Le repeacuterage des domaines et des cleacutes est obligatoire

[ ]solution ndeg5 [ ] p57

Dessiner des tableaux remplis avec les donneacutees fournies en exemple afin de montrer que le modegravele fonctionne selon le besoin exprimeacute initialement On pourra mettre le premier mot seulement des descriptions pour gagner du temps

[ ]solution ndeg6 [ ] p57

Exercice Super-heacuteros relationnels I

32

-

-

Question

3 Exercice Super-heacuteros relationnels I[20 min]

La gamme de super-heacuteros GARVEL veut reacutealiser la base de donneacutees de leurs figurines articuleacutees La socieacuteteacute a fait reacutealiser un modegravele UML qui doit servir de point de deacutepart agrave la mise en œuvre

Modegravele UML Figurines GARVEL

Question

4 Exercice Objets Numeacuteriques Libres[30 min]

Lassociation ONL (Objets Numeacuteriques Libres) est une association de promotion des logiciels libres Elle souhaite exposer sur un site Internet une liste de logiciels libres Ce site sera adosseacute agrave une base de donneacutees relationnelle ou relationnel-objet La premiegravere eacutetape de sa deacutemarche est de reacutealiser un modegravele conceptuel repreacutesentant ce quelle souhaite faire

La base de donneacutees permet de geacuterer des applicationsLes applications sont identifieacutees par leur nom (LibreOffice Gimp) et leur version (10 21) et comportent une description courte et une URL Tous les attributs sont obligatoires Chaque application a une URL uniqueLa base de donneacutees permet de geacuterer des librairies

Traduire le scheacutema en modegravele logique relationnel ( )MLD1

On choisira obligatoirement les cleacutes primaires parmi celles neacutecessitant le plus petit nombre de bits possible pour leur codage

[ ]solution ndeg7 [ ] p57

Transformer le modegravele UML en modegravele relationnel (justifier les passages non triviaux en particulier la relation dheacuteritage)

[ ]solution ndeg8 [ ] p58

Exercice Objets Numeacuteriques Libres

33

-

-

-

-

-

-

-

-

-

-

-

-

Les librairies sont des logiciels mais pas des applications Elles ont les mecircmes attributs que les applications (nom version description courte URL) mais les URL ne sont pas neacutecessairement uniques Les applications peuvent deacutependre de librairies ou dautres applications et les librairies peuvent deacutependre dautres librairies (mais pas dune application)La base de donneacutees permet de geacuterer des composantsLes composants sont inteacutegreacutes agrave une application ou librairie Les composants ont un code interne agrave lapplication ou la librairie quil servent une version et une description courte et une URL Le code et le numeacutero de version permettent didentifier localement le composant au sein de la librairie ou de lapplication la description courte et lURL sont optionnellesLa base de donneacutees permet de geacuterer des licencesLes applications librairies et composants sont attacheacutes agrave une ou plusieurs licences identifieacutees par leur nom (GPL MPL) leur version et leur langue et comportant le texte inteacutegral de la licence Les versions des logiciels et licences sont de type numeacutero de licence majeur point numeacutero de licence mineur comme 10 ou 22La base de donneacutees permet de geacuterer des cateacutegoriesChaque logiciel est rangeacute dans une cateacutegorie principale et plusieurs cateacutegories secondaires Exemple de cateacutegories bureautique dessin multimeacutedia physique

Exemple (factice) de donneacutees

Applications

Scenari 41 une chaicircne eacuteditoriale XML httpscenariorg deacutepend de Libreoffice 43 et de ImageMagick 68Libreoffice 43 une suite bureautique WYSIWYG httplibreofficeorg

Librairie

ImageMagick 68 permet de creacuteer de convertir de modifier et dafficher des images http imagemagickorg

Composant

impng 02 est un composant de ImageMagick 68 permet de compresser une image au format PNG

Toutes ces applications librairies et composants sont disponibles sous une licence LGPL 30 et GPL 30 franccedilaisesToutes ces applications et librairies sont rangeacutees dans la cateacutegorie principale document Scenari est rangeacute dans la cateacutegorie secondaire Eacutedition WYSIWYM Libreoffice dans la cateacutegorie secondaire Bureautique ImageMagick dans la cateacutegorie secondaire Multimeacutedia

Question

Reacutealiser un MCD en UML[ ]solution ndeg9 [ ] p58

Devoirs

34

1 Exercice Arbre de scegravene 3D[30 minutes]

On souhaite pouvoir geacuterer les diffeacuterents eacuteleacutements composant des scegravenes 3D dans une base de donneacutees Une scegravene contient des objets qui eux-mecircmes peuvent appartenir agrave plusieurs scegravenes (au moins une) mais il ne peut y avoir plusieurs fois le mecircme objet dans une mecircme scegravene Dans chaque scegravene les objets peuvent ecirctre visibles ou invisibles Les scegravenes et les objets sont identifieacutes de maniegravere unique par un nom Une scegravene peut ecirctre active ou inactive Un objet a comme proprieacuteteacute une position dans lespace repreacutesenteacutee par un vecteur de reacuteels agrave trois composantes (x y z) Les objets sont organiseacutes de maniegravere hieacuterarchique un objet peut ecirctre parent de plusieurs objets et chaque objet peut avoir au plus un parent Des scripts peuvent ecirctre associeacutes agrave un objet ou agrave une scegravene (agrave lun ou agrave lautre mais pas aux deux) Un script est identifieacute de maniegravere unique par un nom et possegravede eacutegalement un attribut permettant de connaicirctre son eacutetat (actif ou inactif) Un personnage est un objet particulier qui possegravede des animations Une animation est relative agrave un personnage et est identifieacutee de maniegravere locale par un nom Agrave un objet est associeacute un maillage et celui-ci peut ecirctre utiliseacute par plusieurs objets Un maillage est identifieacute de maniegravere unique par un nom et est composeacute de plusieurs eacuteleacutements Chaque eacuteleacutement est relatif agrave un maillage et est identifieacute de maniegravere locale par un numeacutero Il existe exactement trois types deacuteleacutement des nœuds des arrecirctes et des faces Une face est deacutelimiteacutee par trois arrecirctes et chaque arrecircte est deacutelimiteacutee par deux nœuds Plusieurs arrecirctes peuvent partager un mecircme nœud et plusieurs faces peuvent partager une mecircme arrecircte Afin deacutevaluer la complexiteacute dune scegravene on souhaite pouvoir calculer le nombre de faces afficheacutees pour une scegravene donneacutee (cest-agrave-dire la somme du nombre de faces du maillage associeacute aux objets visibles de la scegravene) Un maillage possegravede plusieurs mateacuteriaux identifieacutes de maniegravere unique par un nom Un mateacuteriau peut ecirctre associeacute agrave plusieurs maillages Un mateacuteriau est caracteacuteriseacute par une couleur deacutefinie par un vecteur dentiers agrave quatre composantes rouge vert bleu alpha Un mateacuteriau peut posseacuteder une texture et celle-ci peut ecirctre utiliseacutee par plusieurs mateacuteriaux Une texture est identifieacutee de maniegravere unique par un nom et possegravede comme attribut une image

Question 1

Question 2

DevoirsIII

Proposez une clarification de ce problegraveme On pourra reclasser les informations par grande cateacutegorie scegravene objets scripts

Eacutetablissez un modegravele conceptuel en UML de ce problegraveme

Compleacutement Exercices de modeacutelisation suppleacutementaire

35

1 Exercice Appartements agrave louer[30 min]

Une agence dimmobilier (ventes et locations) veut geacuterer son parc dappartements dans une base de donneacutees Chaque appartement possegravede plusieurs piegraveces qui peuvent ecirctre des piegraveces dhabitation des piegraveces de rangement ou des commoditeacutes

Chaque piegravece a une superficie un nombre de prises eacutelectriques et des meubles Pour ces derniers on veut enregistrer le nom du modegravele et le type (chaise lit four etc) Rien nempecircche quune piegravece comporte plusieurs meubles identiques (par exemple plusieurs chaises PIN IQUEA) Les piegraveces dhabitation ont une ou plusieurs fenecirctres les piegraveces de rangement ont une ou plusieurs eacutetagegraveres et une surface de rangement utile totale On veut aussi savoir dans quelles piegraveces de rangement se situent les tableaux eacutelectriques de lappartement Finalement les piegraveces commoditeacutes peuvent ecirctre de trois types cuisine toilette ou salle de bain

Lagence veut aussi enregistrer les portes entre les diffeacuterentes piegraveces Une porte peut ecirctre agrave simple battant double battant coulissante ou une simple ouverture

Chaque appartement a une adresse une superficie totale (qui est la somme des superficies des piegraveces) et un type qui est la lettre T suivie du nombre de piegraveces dhabitation de lappartement Pour un appartement donneacute chaque piegravece est identifieacutee par un numeacutero (commenccedilant au numeacutero 1)

Lagence veut eacutegalement enregistrer le quartier ougrave se trouve lappartement auquel est lieacute un prix par megravetre carreacute Finalement elle veut garder un historique de lhistoire de lappartement les peacuteriodes pour lesquelles il est libre occupeacute en travaux ou vendu

Question

2 Exercice Objectifs[40 min]

Vous prenez la preacutesidence de lassociation Objectifs dont lobjet est daider ses eacutetudiants membres agrave mener des projets dans le cadre de leurs eacutetudes

Compleacutement Exercices de modeacutelisation suppleacutementaire

IV

Reacutealisez le diagramme UML reacutepondant aux besoins de cette agence[ ]solution ndeg10 [ ] p59

Exercice Objectifs

36

- - -

-

-

- - -

Vous constatez en arrivant dans lassociation que personne ne sait exactement quels sont les projets en cours ni qui fait quoi dans les projets Vous ne parvenez pas non plus agrave obtenir une liste exacte des partenaires sur lesquels lassociation peut compter La seule chose sur laquelle vous parvenez agrave mettre la main est un fichier tableur vaguement agrave jour

Vous deacutecidez quil est plus que temps de mettre en place une base de donneacutees afin dassurer la bonne gestion des informations les plus importantes pour lassociation Vous vous attachez pour cela agrave reacutealiser une analyse des besoins

Analysez les documents ci-apregraves

Etat des projets

Eacutetat des projets de lassociation Objectifs

Recueil de besoins

Agrave partir de leacutetude du fonctionnement actuel de lassociation vous relevez les choses importantes agrave geacuterer suivantes

Les membres de lassociation geacuteneacuteralement identifieacutes par leur preacutenomLes projets geacutereacutes par lassociation avec des dates de deacutebut et de fin preacutecises et un chef de projetLe deacutetail des tacircches de chaque projet avec leurs dates de deacutebut et de fin aussi et la liste de tous les membres qui y participentLa liste des partenaires des projets avec leur rocircle preacutecis pour chacun des projets auxquels ils participent

Afin de mieux geacuterer les attributions des projets il serait eacutegalement inteacuteressant de creacuteer une liste des speacutecialiteacutes correspondant agrave ce qui ce fait dans lassociation et daffecter une speacutecialiteacute agrave chaque membre ainsi quune agrave chaque projet pour voir si ce sont bien les membres les mieux adapteacutes qui travaille sur les projets

Recueil de donneacutees

Les discussions avec les anciens membres de lassociation vous apprennent les choses suivantes

Lassociation a termineacute de geacuterer les trois projets Comeacutedie Musicale geacutereacutee par Nathalie sur les trois premiers mois du semestre dautomne 1001 Science en fecircte geacutereacutee par Pierre sur tout le semestre de printemps 1003 et Nuit du picolo geacutereacutee par Julien en novembre 1001Les speacutecialiteacutes recenseacutees pour le moment sont Ville Universiteacute Sport Entreprise Culture InternationalIl faut au moins dix membres agrave lassociation (sinon elle ferme) recruter ceux qui manquentAidez lassociation agrave diviser ses projets en tacircches

Exercice Objectifs

37

- Les partenaires suivants aident ou ont aideacute lassociation la mairie pour la comeacutedie musicale et la science en fecircte qui apporte un soutien financier le ministegravere de la culture qui apporte son soutien logistique agrave la science en fecircte lassociation des commerccedilants de la ville qui apporte son soutien publicitaire agrave la comeacutedie musicale 1664 qui offre ses biegraveres agrave moitieacute prix pour la nuit du Picolo

Question 1

Question 2

Question 3

Afin de preacuteparer une analyse des besoins sommaire listez les donneacutees que vous devrez geacuterer agrave laide des documents et recueils de discussion agrave votre disposition Faites des hypothegraveses lorsque les donneacutees sont incomplegravetes ou incoheacuterentes

[ ]solution ndeg11 [ ] p59

Reacutealiser le MCD en UML et en E-A agrave partir des donneacutees preacutepareacutees dans la question preacuteceacutedente[ ]solution ndeg12 [ ] p60

Reacutealiser le MLD en relationnel en traduisant votre MCD[ ]solution ndeg13 [ ] p61

Contenus annexes

38Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

- - -

gt Attributs

Un attribut est une information eacuteleacutementaire qui caracteacuterise une classe et dont la valeur deacutepend de lobjet instancieacute

Le domaine des valeurs que peut prendre lattribut est fixeacute a prioriUn attribut est typeacute

Il peut prendre plusieurs valeurs distinctes dans son domaineUn attribut peut ecirctre multivalueacute Sa valeur alors est une fonction sur dautres attributs de la classeUn attribut peut ecirctre deacuteriveacute

(ou composite) Il joue alors le rocircle dun groupe dattributs (par Un attribut peut ecirctre composeacuteexemple une adresse peut ecirctre un attribut composeacute des attributs numeacutero type de voie nom de la voie) Cette notion renvoie agrave la notion de variable de type dans les langages de Record

programmation classiques

En UML on preacutefegravere lusage de meacutethodes aux attributs deacuteriveacutes On utilisera toujours des meacutethodes degraves que la valeur de lattribut deacuteriveacute deacutepend dautres attributs exteacuterieurs agrave sa classeEn UML on preacutefegravere lusage de compositions aux attributs composeacutes On utilisera toujours des compositions pour les attributs composeacutes et multivalueacutes

1 attributtype2 attribut_multivalueacute[nbMinValeursnbMaxValeurs]type3 attribut_deacuteriveacutetype4 attribut_composeacute5   - sous-attribut1type6   - sous-attribut2type7   -

Contenus annexes

Deacutefinition Attribut

Attention On utilise peu les attributs deacuteriveacutes et composeacutes en UML

Syntaxe

attributtype

attribut_multivalueacute[nbMinValeursnbMaxValeurs]type

attribut_deacuteriveacutetype

attribut_composeacute

  - sous-attribut1type

  - sous-attribut2type

  -

Contenus annexes

39Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Repreacutesentation dattributs en UML

Dans cet exemple les attributs Nom Preacutenom sont de type lun de 20 caractegraveres et lautre de 10 stringtandis que DateNaissance est de type et Age de type Preacutenom est un attribut multivalueacute ici date integerune personne peut avoir de 1 agrave 3 preacutenoms Age est un attribut deacuteriveacute il est calculeacute par une fonction sur DateNaissance

Meacutethodes (cf p39)

Composition (cf p5)

gt Meacutethodes

Une meacutethode (ou opeacuteration) est une fonction associeacutee agrave une classe dobjet qui permet dagir sur les objets de la classe ou qui permet agrave ces objets de renvoyer des valeurs (calculeacutees en fonction de paramegravetres)

1 methode(paramegravetres)type

Pour la modeacutelisation des bases de donneacutees les meacutethodes sont surtout utiliseacutees pour repreacutesenter des donneacutees calculeacutees (agrave linstar des attributs deacuteriveacutees) ou pour mettre en exergue des fonctions importantes du systegraveme cible Seules les meacutethodes les plus importantes sont repreacutesenteacutees lapproche est moins systeacutematique quen modeacutelisation objet par exemple

Lors de la transformation du modegravele conceptuel UML en modegravele logique relationnel les meacutethodes ne Leur repeacuterage au niveau conceptuel sert donc surtout daide-seront geacuteneacuteralement pas impleacutementeacutees

meacutemoire pour limpleacutementation au niveau applicatif

Exemple La classe Personne

Compleacutement Voir aussi

Deacutefinition Meacutethode

Syntaxe

Remarque Meacutethodes et modeacutelisation de BD

Remarque Meacutethodes relationnel relationnel-objet

methode(paramegravetres)type

Contenus annexes

40Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Au contraire un modegravele logique relationnel-objet permettra limpleacutementation de meacutethodes directement associeacutees agrave des tables Leur repeacuterage au niveau conceptuel est donc encore plus important

Transformation des meacutethodes par des vues (cf p40)

gt Transformation des meacutethodes par des vues

Lorsquune meacutethode est speacutecifieacutee sur un diagramme UML pour une classe C si cette meacutethode est une fonction relationnelle (elle renvoie une unique valeur et elle peut ecirctre reacutesolue par une requecircte SQL) alors on creacutee une vue qui reprend les attributs de la classe C et ajoute des colonnes calculeacutees pour les meacutethodes

Les attributs deacuteriveacutes eacutetant apparenteacutes agrave des meacutethodes ils peuvent eacutegalement ecirctre geacutereacutes par des vues

gt Classe dassociation

On utilise la notation des classes dassociation lorsque lon souhaite ajouter des proprieacuteteacutes agrave une association

Notation dune classe dassociation en UML

On reacuteserve en geacuteneacuteral les classes dassociation aux associations NM

Il est toujours possible de reacuteduire une classe dassociation sur une association 1N en migrant ses attributs sur la classe cocircteacute N et cest en geacuteneacuteral plus lisible ainsi

Compleacutement

Meacutethode

Remarque Attributs deacuteriveacutes

Deacutefinition Classe dassociation

Syntaxe Notation dune classe dassociation en UML

Meacutethode

Contenus annexes

41Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

-

Emplois

Selon le standard UML une classe dassociation est une classe et agrave ce titre elle peut ecirctre mobiliseacutee dans dautres associations ou dans des heacuteritages Nous deacuteconseillons neacuteanmoins ces notations qui ont tendance agrave complexifier la lecture et la transformation du diagramme

Nous conseillons donc de ne jamais associer une classe dassociation

gt Transformation des attributs

Pour chaque attribut eacuteleacutementaire et monovalueacute dune classe

on creacutee un attribut correspondant

Attribut

Classe1(ab)

Pour chaque attribut composite comprenant N sous-attributs dune classe

on creacutee N attributs correspondantsdont les noms sont la concateacutenation du nom de lattribut composite avec celui du sous-attribut

Exemple Exemple de classe dassociation

Conseil

Meacutethode Attributs simples

Meacutethode Attributs composites

Contenus annexes

42Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- - - -

Attribut composeacute

Classe1(ab_b1b_b2)

Pour chaque attribut multivalueacute b dune classe C

on creacutee une nouvelle relation RBqui comprend un attribut monovalueacute correspondant agrave bplus la cleacute de la relation repreacutesentant C la cleacute de RB est la concateacutenation des deux attributs

Attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Dans le cas ougrave le nombre maximum de est fini et petit on peut eacutegalement adopter la transformation b

suivante Classe1(ab1b2b3b4b5b6b7b8b9b10)

Si le nombre dattributs est infini ( ) cest impossible sil est trop grand ce nest pas souhaitableb[1]

On combine les regravegles eacutenonceacutees pour les attributs composeacutes et pour les attributs multivalueacutes

Attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Transformation des compositions (cf p42)

Meacutethode Attributs multivalueacutes

Meacutethode Attributs multivalueacutes (meacutethode alternative)

Meacutethode Attributs composeacutes multivalueacutes

Rappel Voir aussi

Contenus annexes

43Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

gt Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Compleacutement Attributs multivalueacutes et composeacutes

Contenus annexes

44Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

Rappel Voir aussi

Rappel

Meacutethode

Contenus annexes

45Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p48)

gt Transformation des associations 1N

Pour chaque association binaire de type 1N

on ajoute agrave la relation cocircteacute N une cleacute eacutetrangegravere vers la relation cocircteacute 1

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Meacutethode

Contenus annexes

46Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Association 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Contrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p46)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

R1

Compleacutement

Rappel

Meacutethode

Contenus annexes

47Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p47)

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Deacutefinition Projection

Contenus annexes

48Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Deacutefinition Projection

Contenus annexes

49Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Transformation des classes dassociation

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de lassociation NM

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Meacutethode Classe dassociation NM

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Bibliographie commenteacutee sur la modeacutelisation UML

28

- - - - - -

- - - - - -

Agrave voir eacutegalement en Open Source ou (non testeacute par lauteur)ArgoUML EclipseUML

UML2 en action

Pour un aperccedilu plus deacutetailleacute des possibiliteacutes dexpression du diagramme de classe UML lire le chapitre 7 Deacuteveloppement du modegravele statique (pages 133 agrave 163)

On pourra notamment y trouver

Lassociation dagreacutegationLes proprieacuteteacutes dassociationLexpression de rocircles dans les associationsLes attributs de classeLes qualificatifsLes opeacuterations (ou meacutethodes)

Le chapitre donne de plus des conseils meacutethodologiques pour la conception (voir en particulier la synthegravese page 163)

On pourra eacutegalement y trouver

Des principes de choix de modeacutelisation entre attributs et classes et sur la segmentation des classesDes principes de seacutelection des attributs (redondance avec les associations avec les classes etc)Des principes de seacutelection des associationsDes principes de choix de cardinaliteacute (notamment pour la gestion dhistorisation)Des principes de seacutelection des relations de geacuteneacuteralisation (heacuteritage)Des principes dintroduction de meacutetaclasses (type)s

U M L e n Franccedilais

Une tregraves bonne reacutefeacuterence en ligne sur la modeacutelisation UML avec des cours des liens vers la norme etc

Le contenu deacutepasse tregraves largement lusage dUML pour la modeacutelisation de BD (et ne fait dailleurs pas de reacutefeacuterence preacutecise agrave ce sous-ensemble particulier)

On pourra consulter en particulier le chapitre sur les diagrammes de classe httpumlfreefrcoursi-p14html

UML en 5 eacutetapes

On consultera en particulier le tutoriel sur les diagrammes de classe httpdeveloppeurjournaldunetcomtutorielcpt010607cpt_umlintroshtml

Cinq petits conseils pour un scheacutema UML efficace

Compleacutement Modeacutelisation UML

Compleacutement Reacutefeacuterence UML en ligne

Compleacutement Tutoriel sur la modeacutelisation UML

Compleacutement Conseils

Synthegravese Les diagrammes de modeacutelisation conceptuelle

29

-

-

- -

-

- -

-

-

- -

-

- - - -

-

-

(chapitre 3)UML2 par la pratique

Des explications exemples et eacutetudes de cas

54 Synthegravese Les diagrammes de modeacutelisation conceptuelle

Un modegravele conceptuel peut ecirctre repreacutesenteacute sous forme de diagramme E-A ou sous forme de diagramme de classe UML

Classe ou Entiteacute

Attribut ou Proprieacuteteacute

TypeacuteMulti-valueacuteComposeacuteDeacuteriveacute

Meacutethode

ParamegravetresValeur de retour

Association

Association

VerbeCardinaliteacute

Heacuteritage

Heacuteritage dattributsHeacuteritage de meacutethodes

Composition (ou entiteacute faible)

Cardinaliteacute

Compleacutement Pratique

Exercices

30

-

-

-

-

-

-

-

1 2

1

1 Exercice Lab III[20 min]

Description du problegraveme

Un laboratoire souhaite geacuterer les meacutedicaments quil conccediloit

Un meacutedicament est deacutecrit par un nom qui permet de lidentifier En effet il nexiste pas deux meacutedicaments avec le mecircme nom Un meacutedicament comporte une description courte en franccedilais ainsi quune description longue en latin On gegravere aussi le conditionnement du meacutedicament cest agrave dire le nombre de pilules par boicircte (qui est un nombre entier)Agrave chaque meacutedicament on associe une liste deacutedieacutee de contre-indications geacuteneacuteralement plusieurs parfois aucune Les contre-indications sont trieacutees par ordre dimportance Lordre est total est strict pour un meacutedicament donc chaque contre-indication possegravede une importance et il nexiste pas deux contre-indications associeacutees au mecircme meacutedicament avec la mecircme importanceTout meacutedicament possegravede au moins un composant souvent plusieurs Un composant est identifieacute par un code unique et possegravede un intituleacute Tout composant peut intervenir dans la fabrication de plusieurs meacutedicaments Il existe des composants qui ne sont pas utiliseacutes pour fabriquer des meacutedicaments et que lon veut quand mecircme geacuterer

Donneacutees de test

Afin de mateacuterialiser notre base de donneacutees nous obtenons les descriptions suivantes

Le a pour description courte et pour description longue Chourix Meacutedicament contre la chute des chouxlaquo raquoVivamus fermentum semper porta Nunc diam velit adipiscing ut tristique vitae sagittis vel odio laquo

Il est conditionneacute en boicircte de 13Maecenas convallis ullamcorper ultricies Curabitur ornare raquoSes contre-indications sont

Le Chourix ne doit jamais ecirctre pris apregraves minuitLe Chourix ne doit jamais ecirctre mis au contact avec de leau

Ses composants sont le et le HG79 SN50Le a pour description courte et pour Tropas Meacutedicament contre les dysfonctionnements intellectuelslaquo raquodescription longue Suspendisse lectus leo consectetur in tempor sit amet placerat quis neque Etiam laquo

Il est conditionneacute en boicircte de 42luctus porttitor lorem sed suscipit est rutrum non raquoSes contre-indications sont

Le Tropas doit ecirctre gardeacute agrave labri de la lumiegravere du soleil

Son unique composant est le HG79Les composants existants sont

HG79 Vif-argent alleacutegeacute

ExercicesII

Exercice Eacutetudiants et UVs (introduction)

31

- - -

- - HG81 Vif-argent alourdi

SN50 Pur eacutetain

Question 1

Question 2

Question 3

2 Exercice Eacutetudiants et UVs (introduction)[20 min]

On dispose du scheacutema UML ci-apregraves qui deacutecrit des eacutetudiants des UV les notes obtenues par les eacutetudiants agrave ces UV et les diplocircmes dorigine de ces eacutetudiants

Eacutetudiants et UVs

key deacutesigne des cleacutes candidates ici toutes les cleacutes ne sont composeacutees que dun seul attributlocal key deacutesigne une cleacute localeun semestre est de la forme PYYYY ou AYYYY (ougrave YYYY deacutesigneacute une anneacutee sur 4 chiffre) exemple A2013 P2014

Rappel Notion de cleacute locale dans classes dassociation (cf p49)

Effectuez le modegravele conceptuel en UML de ce problegraveme

Indices

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans deacutedieacuteeles donneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition

[ ]solution ndeg4 [ ] p56

En mobilisant les regravegles adeacutequates proposer un modegravele logique de donneacutees correspondant en relationnel Le repeacuterage des domaines et des cleacutes est obligatoire

[ ]solution ndeg5 [ ] p57

Dessiner des tableaux remplis avec les donneacutees fournies en exemple afin de montrer que le modegravele fonctionne selon le besoin exprimeacute initialement On pourra mettre le premier mot seulement des descriptions pour gagner du temps

[ ]solution ndeg6 [ ] p57

Exercice Super-heacuteros relationnels I

32

-

-

Question

3 Exercice Super-heacuteros relationnels I[20 min]

La gamme de super-heacuteros GARVEL veut reacutealiser la base de donneacutees de leurs figurines articuleacutees La socieacuteteacute a fait reacutealiser un modegravele UML qui doit servir de point de deacutepart agrave la mise en œuvre

Modegravele UML Figurines GARVEL

Question

4 Exercice Objets Numeacuteriques Libres[30 min]

Lassociation ONL (Objets Numeacuteriques Libres) est une association de promotion des logiciels libres Elle souhaite exposer sur un site Internet une liste de logiciels libres Ce site sera adosseacute agrave une base de donneacutees relationnelle ou relationnel-objet La premiegravere eacutetape de sa deacutemarche est de reacutealiser un modegravele conceptuel repreacutesentant ce quelle souhaite faire

La base de donneacutees permet de geacuterer des applicationsLes applications sont identifieacutees par leur nom (LibreOffice Gimp) et leur version (10 21) et comportent une description courte et une URL Tous les attributs sont obligatoires Chaque application a une URL uniqueLa base de donneacutees permet de geacuterer des librairies

Traduire le scheacutema en modegravele logique relationnel ( )MLD1

On choisira obligatoirement les cleacutes primaires parmi celles neacutecessitant le plus petit nombre de bits possible pour leur codage

[ ]solution ndeg7 [ ] p57

Transformer le modegravele UML en modegravele relationnel (justifier les passages non triviaux en particulier la relation dheacuteritage)

[ ]solution ndeg8 [ ] p58

Exercice Objets Numeacuteriques Libres

33

-

-

-

-

-

-

-

-

-

-

-

-

Les librairies sont des logiciels mais pas des applications Elles ont les mecircmes attributs que les applications (nom version description courte URL) mais les URL ne sont pas neacutecessairement uniques Les applications peuvent deacutependre de librairies ou dautres applications et les librairies peuvent deacutependre dautres librairies (mais pas dune application)La base de donneacutees permet de geacuterer des composantsLes composants sont inteacutegreacutes agrave une application ou librairie Les composants ont un code interne agrave lapplication ou la librairie quil servent une version et une description courte et une URL Le code et le numeacutero de version permettent didentifier localement le composant au sein de la librairie ou de lapplication la description courte et lURL sont optionnellesLa base de donneacutees permet de geacuterer des licencesLes applications librairies et composants sont attacheacutes agrave une ou plusieurs licences identifieacutees par leur nom (GPL MPL) leur version et leur langue et comportant le texte inteacutegral de la licence Les versions des logiciels et licences sont de type numeacutero de licence majeur point numeacutero de licence mineur comme 10 ou 22La base de donneacutees permet de geacuterer des cateacutegoriesChaque logiciel est rangeacute dans une cateacutegorie principale et plusieurs cateacutegories secondaires Exemple de cateacutegories bureautique dessin multimeacutedia physique

Exemple (factice) de donneacutees

Applications

Scenari 41 une chaicircne eacuteditoriale XML httpscenariorg deacutepend de Libreoffice 43 et de ImageMagick 68Libreoffice 43 une suite bureautique WYSIWYG httplibreofficeorg

Librairie

ImageMagick 68 permet de creacuteer de convertir de modifier et dafficher des images http imagemagickorg

Composant

impng 02 est un composant de ImageMagick 68 permet de compresser une image au format PNG

Toutes ces applications librairies et composants sont disponibles sous une licence LGPL 30 et GPL 30 franccedilaisesToutes ces applications et librairies sont rangeacutees dans la cateacutegorie principale document Scenari est rangeacute dans la cateacutegorie secondaire Eacutedition WYSIWYM Libreoffice dans la cateacutegorie secondaire Bureautique ImageMagick dans la cateacutegorie secondaire Multimeacutedia

Question

Reacutealiser un MCD en UML[ ]solution ndeg9 [ ] p58

Devoirs

34

1 Exercice Arbre de scegravene 3D[30 minutes]

On souhaite pouvoir geacuterer les diffeacuterents eacuteleacutements composant des scegravenes 3D dans une base de donneacutees Une scegravene contient des objets qui eux-mecircmes peuvent appartenir agrave plusieurs scegravenes (au moins une) mais il ne peut y avoir plusieurs fois le mecircme objet dans une mecircme scegravene Dans chaque scegravene les objets peuvent ecirctre visibles ou invisibles Les scegravenes et les objets sont identifieacutes de maniegravere unique par un nom Une scegravene peut ecirctre active ou inactive Un objet a comme proprieacuteteacute une position dans lespace repreacutesenteacutee par un vecteur de reacuteels agrave trois composantes (x y z) Les objets sont organiseacutes de maniegravere hieacuterarchique un objet peut ecirctre parent de plusieurs objets et chaque objet peut avoir au plus un parent Des scripts peuvent ecirctre associeacutes agrave un objet ou agrave une scegravene (agrave lun ou agrave lautre mais pas aux deux) Un script est identifieacute de maniegravere unique par un nom et possegravede eacutegalement un attribut permettant de connaicirctre son eacutetat (actif ou inactif) Un personnage est un objet particulier qui possegravede des animations Une animation est relative agrave un personnage et est identifieacutee de maniegravere locale par un nom Agrave un objet est associeacute un maillage et celui-ci peut ecirctre utiliseacute par plusieurs objets Un maillage est identifieacute de maniegravere unique par un nom et est composeacute de plusieurs eacuteleacutements Chaque eacuteleacutement est relatif agrave un maillage et est identifieacute de maniegravere locale par un numeacutero Il existe exactement trois types deacuteleacutement des nœuds des arrecirctes et des faces Une face est deacutelimiteacutee par trois arrecirctes et chaque arrecircte est deacutelimiteacutee par deux nœuds Plusieurs arrecirctes peuvent partager un mecircme nœud et plusieurs faces peuvent partager une mecircme arrecircte Afin deacutevaluer la complexiteacute dune scegravene on souhaite pouvoir calculer le nombre de faces afficheacutees pour une scegravene donneacutee (cest-agrave-dire la somme du nombre de faces du maillage associeacute aux objets visibles de la scegravene) Un maillage possegravede plusieurs mateacuteriaux identifieacutes de maniegravere unique par un nom Un mateacuteriau peut ecirctre associeacute agrave plusieurs maillages Un mateacuteriau est caracteacuteriseacute par une couleur deacutefinie par un vecteur dentiers agrave quatre composantes rouge vert bleu alpha Un mateacuteriau peut posseacuteder une texture et celle-ci peut ecirctre utiliseacutee par plusieurs mateacuteriaux Une texture est identifieacutee de maniegravere unique par un nom et possegravede comme attribut une image

Question 1

Question 2

DevoirsIII

Proposez une clarification de ce problegraveme On pourra reclasser les informations par grande cateacutegorie scegravene objets scripts

Eacutetablissez un modegravele conceptuel en UML de ce problegraveme

Compleacutement Exercices de modeacutelisation suppleacutementaire

35

1 Exercice Appartements agrave louer[30 min]

Une agence dimmobilier (ventes et locations) veut geacuterer son parc dappartements dans une base de donneacutees Chaque appartement possegravede plusieurs piegraveces qui peuvent ecirctre des piegraveces dhabitation des piegraveces de rangement ou des commoditeacutes

Chaque piegravece a une superficie un nombre de prises eacutelectriques et des meubles Pour ces derniers on veut enregistrer le nom du modegravele et le type (chaise lit four etc) Rien nempecircche quune piegravece comporte plusieurs meubles identiques (par exemple plusieurs chaises PIN IQUEA) Les piegraveces dhabitation ont une ou plusieurs fenecirctres les piegraveces de rangement ont une ou plusieurs eacutetagegraveres et une surface de rangement utile totale On veut aussi savoir dans quelles piegraveces de rangement se situent les tableaux eacutelectriques de lappartement Finalement les piegraveces commoditeacutes peuvent ecirctre de trois types cuisine toilette ou salle de bain

Lagence veut aussi enregistrer les portes entre les diffeacuterentes piegraveces Une porte peut ecirctre agrave simple battant double battant coulissante ou une simple ouverture

Chaque appartement a une adresse une superficie totale (qui est la somme des superficies des piegraveces) et un type qui est la lettre T suivie du nombre de piegraveces dhabitation de lappartement Pour un appartement donneacute chaque piegravece est identifieacutee par un numeacutero (commenccedilant au numeacutero 1)

Lagence veut eacutegalement enregistrer le quartier ougrave se trouve lappartement auquel est lieacute un prix par megravetre carreacute Finalement elle veut garder un historique de lhistoire de lappartement les peacuteriodes pour lesquelles il est libre occupeacute en travaux ou vendu

Question

2 Exercice Objectifs[40 min]

Vous prenez la preacutesidence de lassociation Objectifs dont lobjet est daider ses eacutetudiants membres agrave mener des projets dans le cadre de leurs eacutetudes

Compleacutement Exercices de modeacutelisation suppleacutementaire

IV

Reacutealisez le diagramme UML reacutepondant aux besoins de cette agence[ ]solution ndeg10 [ ] p59

Exercice Objectifs

36

- - -

-

-

- - -

Vous constatez en arrivant dans lassociation que personne ne sait exactement quels sont les projets en cours ni qui fait quoi dans les projets Vous ne parvenez pas non plus agrave obtenir une liste exacte des partenaires sur lesquels lassociation peut compter La seule chose sur laquelle vous parvenez agrave mettre la main est un fichier tableur vaguement agrave jour

Vous deacutecidez quil est plus que temps de mettre en place une base de donneacutees afin dassurer la bonne gestion des informations les plus importantes pour lassociation Vous vous attachez pour cela agrave reacutealiser une analyse des besoins

Analysez les documents ci-apregraves

Etat des projets

Eacutetat des projets de lassociation Objectifs

Recueil de besoins

Agrave partir de leacutetude du fonctionnement actuel de lassociation vous relevez les choses importantes agrave geacuterer suivantes

Les membres de lassociation geacuteneacuteralement identifieacutes par leur preacutenomLes projets geacutereacutes par lassociation avec des dates de deacutebut et de fin preacutecises et un chef de projetLe deacutetail des tacircches de chaque projet avec leurs dates de deacutebut et de fin aussi et la liste de tous les membres qui y participentLa liste des partenaires des projets avec leur rocircle preacutecis pour chacun des projets auxquels ils participent

Afin de mieux geacuterer les attributions des projets il serait eacutegalement inteacuteressant de creacuteer une liste des speacutecialiteacutes correspondant agrave ce qui ce fait dans lassociation et daffecter une speacutecialiteacute agrave chaque membre ainsi quune agrave chaque projet pour voir si ce sont bien les membres les mieux adapteacutes qui travaille sur les projets

Recueil de donneacutees

Les discussions avec les anciens membres de lassociation vous apprennent les choses suivantes

Lassociation a termineacute de geacuterer les trois projets Comeacutedie Musicale geacutereacutee par Nathalie sur les trois premiers mois du semestre dautomne 1001 Science en fecircte geacutereacutee par Pierre sur tout le semestre de printemps 1003 et Nuit du picolo geacutereacutee par Julien en novembre 1001Les speacutecialiteacutes recenseacutees pour le moment sont Ville Universiteacute Sport Entreprise Culture InternationalIl faut au moins dix membres agrave lassociation (sinon elle ferme) recruter ceux qui manquentAidez lassociation agrave diviser ses projets en tacircches

Exercice Objectifs

37

- Les partenaires suivants aident ou ont aideacute lassociation la mairie pour la comeacutedie musicale et la science en fecircte qui apporte un soutien financier le ministegravere de la culture qui apporte son soutien logistique agrave la science en fecircte lassociation des commerccedilants de la ville qui apporte son soutien publicitaire agrave la comeacutedie musicale 1664 qui offre ses biegraveres agrave moitieacute prix pour la nuit du Picolo

Question 1

Question 2

Question 3

Afin de preacuteparer une analyse des besoins sommaire listez les donneacutees que vous devrez geacuterer agrave laide des documents et recueils de discussion agrave votre disposition Faites des hypothegraveses lorsque les donneacutees sont incomplegravetes ou incoheacuterentes

[ ]solution ndeg11 [ ] p59

Reacutealiser le MCD en UML et en E-A agrave partir des donneacutees preacutepareacutees dans la question preacuteceacutedente[ ]solution ndeg12 [ ] p60

Reacutealiser le MLD en relationnel en traduisant votre MCD[ ]solution ndeg13 [ ] p61

Contenus annexes

38Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

- - -

gt Attributs

Un attribut est une information eacuteleacutementaire qui caracteacuterise une classe et dont la valeur deacutepend de lobjet instancieacute

Le domaine des valeurs que peut prendre lattribut est fixeacute a prioriUn attribut est typeacute

Il peut prendre plusieurs valeurs distinctes dans son domaineUn attribut peut ecirctre multivalueacute Sa valeur alors est une fonction sur dautres attributs de la classeUn attribut peut ecirctre deacuteriveacute

(ou composite) Il joue alors le rocircle dun groupe dattributs (par Un attribut peut ecirctre composeacuteexemple une adresse peut ecirctre un attribut composeacute des attributs numeacutero type de voie nom de la voie) Cette notion renvoie agrave la notion de variable de type dans les langages de Record

programmation classiques

En UML on preacutefegravere lusage de meacutethodes aux attributs deacuteriveacutes On utilisera toujours des meacutethodes degraves que la valeur de lattribut deacuteriveacute deacutepend dautres attributs exteacuterieurs agrave sa classeEn UML on preacutefegravere lusage de compositions aux attributs composeacutes On utilisera toujours des compositions pour les attributs composeacutes et multivalueacutes

1 attributtype2 attribut_multivalueacute[nbMinValeursnbMaxValeurs]type3 attribut_deacuteriveacutetype4 attribut_composeacute5   - sous-attribut1type6   - sous-attribut2type7   -

Contenus annexes

Deacutefinition Attribut

Attention On utilise peu les attributs deacuteriveacutes et composeacutes en UML

Syntaxe

attributtype

attribut_multivalueacute[nbMinValeursnbMaxValeurs]type

attribut_deacuteriveacutetype

attribut_composeacute

  - sous-attribut1type

  - sous-attribut2type

  -

Contenus annexes

39Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Repreacutesentation dattributs en UML

Dans cet exemple les attributs Nom Preacutenom sont de type lun de 20 caractegraveres et lautre de 10 stringtandis que DateNaissance est de type et Age de type Preacutenom est un attribut multivalueacute ici date integerune personne peut avoir de 1 agrave 3 preacutenoms Age est un attribut deacuteriveacute il est calculeacute par une fonction sur DateNaissance

Meacutethodes (cf p39)

Composition (cf p5)

gt Meacutethodes

Une meacutethode (ou opeacuteration) est une fonction associeacutee agrave une classe dobjet qui permet dagir sur les objets de la classe ou qui permet agrave ces objets de renvoyer des valeurs (calculeacutees en fonction de paramegravetres)

1 methode(paramegravetres)type

Pour la modeacutelisation des bases de donneacutees les meacutethodes sont surtout utiliseacutees pour repreacutesenter des donneacutees calculeacutees (agrave linstar des attributs deacuteriveacutees) ou pour mettre en exergue des fonctions importantes du systegraveme cible Seules les meacutethodes les plus importantes sont repreacutesenteacutees lapproche est moins systeacutematique quen modeacutelisation objet par exemple

Lors de la transformation du modegravele conceptuel UML en modegravele logique relationnel les meacutethodes ne Leur repeacuterage au niveau conceptuel sert donc surtout daide-seront geacuteneacuteralement pas impleacutementeacutees

meacutemoire pour limpleacutementation au niveau applicatif

Exemple La classe Personne

Compleacutement Voir aussi

Deacutefinition Meacutethode

Syntaxe

Remarque Meacutethodes et modeacutelisation de BD

Remarque Meacutethodes relationnel relationnel-objet

methode(paramegravetres)type

Contenus annexes

40Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Au contraire un modegravele logique relationnel-objet permettra limpleacutementation de meacutethodes directement associeacutees agrave des tables Leur repeacuterage au niveau conceptuel est donc encore plus important

Transformation des meacutethodes par des vues (cf p40)

gt Transformation des meacutethodes par des vues

Lorsquune meacutethode est speacutecifieacutee sur un diagramme UML pour une classe C si cette meacutethode est une fonction relationnelle (elle renvoie une unique valeur et elle peut ecirctre reacutesolue par une requecircte SQL) alors on creacutee une vue qui reprend les attributs de la classe C et ajoute des colonnes calculeacutees pour les meacutethodes

Les attributs deacuteriveacutes eacutetant apparenteacutes agrave des meacutethodes ils peuvent eacutegalement ecirctre geacutereacutes par des vues

gt Classe dassociation

On utilise la notation des classes dassociation lorsque lon souhaite ajouter des proprieacuteteacutes agrave une association

Notation dune classe dassociation en UML

On reacuteserve en geacuteneacuteral les classes dassociation aux associations NM

Il est toujours possible de reacuteduire une classe dassociation sur une association 1N en migrant ses attributs sur la classe cocircteacute N et cest en geacuteneacuteral plus lisible ainsi

Compleacutement

Meacutethode

Remarque Attributs deacuteriveacutes

Deacutefinition Classe dassociation

Syntaxe Notation dune classe dassociation en UML

Meacutethode

Contenus annexes

41Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

-

Emplois

Selon le standard UML une classe dassociation est une classe et agrave ce titre elle peut ecirctre mobiliseacutee dans dautres associations ou dans des heacuteritages Nous deacuteconseillons neacuteanmoins ces notations qui ont tendance agrave complexifier la lecture et la transformation du diagramme

Nous conseillons donc de ne jamais associer une classe dassociation

gt Transformation des attributs

Pour chaque attribut eacuteleacutementaire et monovalueacute dune classe

on creacutee un attribut correspondant

Attribut

Classe1(ab)

Pour chaque attribut composite comprenant N sous-attributs dune classe

on creacutee N attributs correspondantsdont les noms sont la concateacutenation du nom de lattribut composite avec celui du sous-attribut

Exemple Exemple de classe dassociation

Conseil

Meacutethode Attributs simples

Meacutethode Attributs composites

Contenus annexes

42Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- - - -

Attribut composeacute

Classe1(ab_b1b_b2)

Pour chaque attribut multivalueacute b dune classe C

on creacutee une nouvelle relation RBqui comprend un attribut monovalueacute correspondant agrave bplus la cleacute de la relation repreacutesentant C la cleacute de RB est la concateacutenation des deux attributs

Attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Dans le cas ougrave le nombre maximum de est fini et petit on peut eacutegalement adopter la transformation b

suivante Classe1(ab1b2b3b4b5b6b7b8b9b10)

Si le nombre dattributs est infini ( ) cest impossible sil est trop grand ce nest pas souhaitableb[1]

On combine les regravegles eacutenonceacutees pour les attributs composeacutes et pour les attributs multivalueacutes

Attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Transformation des compositions (cf p42)

Meacutethode Attributs multivalueacutes

Meacutethode Attributs multivalueacutes (meacutethode alternative)

Meacutethode Attributs composeacutes multivalueacutes

Rappel Voir aussi

Contenus annexes

43Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

gt Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Compleacutement Attributs multivalueacutes et composeacutes

Contenus annexes

44Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

Rappel Voir aussi

Rappel

Meacutethode

Contenus annexes

45Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p48)

gt Transformation des associations 1N

Pour chaque association binaire de type 1N

on ajoute agrave la relation cocircteacute N une cleacute eacutetrangegravere vers la relation cocircteacute 1

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Meacutethode

Contenus annexes

46Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Association 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Contrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p46)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

R1

Compleacutement

Rappel

Meacutethode

Contenus annexes

47Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p47)

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Deacutefinition Projection

Contenus annexes

48Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Deacutefinition Projection

Contenus annexes

49Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Transformation des classes dassociation

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de lassociation NM

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Meacutethode Classe dassociation NM

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Synthegravese Les diagrammes de modeacutelisation conceptuelle

29

-

-

- -

-

- -

-

-

- -

-

- - - -

-

-

(chapitre 3)UML2 par la pratique

Des explications exemples et eacutetudes de cas

54 Synthegravese Les diagrammes de modeacutelisation conceptuelle

Un modegravele conceptuel peut ecirctre repreacutesenteacute sous forme de diagramme E-A ou sous forme de diagramme de classe UML

Classe ou Entiteacute

Attribut ou Proprieacuteteacute

TypeacuteMulti-valueacuteComposeacuteDeacuteriveacute

Meacutethode

ParamegravetresValeur de retour

Association

Association

VerbeCardinaliteacute

Heacuteritage

Heacuteritage dattributsHeacuteritage de meacutethodes

Composition (ou entiteacute faible)

Cardinaliteacute

Compleacutement Pratique

Exercices

30

-

-

-

-

-

-

-

1 2

1

1 Exercice Lab III[20 min]

Description du problegraveme

Un laboratoire souhaite geacuterer les meacutedicaments quil conccediloit

Un meacutedicament est deacutecrit par un nom qui permet de lidentifier En effet il nexiste pas deux meacutedicaments avec le mecircme nom Un meacutedicament comporte une description courte en franccedilais ainsi quune description longue en latin On gegravere aussi le conditionnement du meacutedicament cest agrave dire le nombre de pilules par boicircte (qui est un nombre entier)Agrave chaque meacutedicament on associe une liste deacutedieacutee de contre-indications geacuteneacuteralement plusieurs parfois aucune Les contre-indications sont trieacutees par ordre dimportance Lordre est total est strict pour un meacutedicament donc chaque contre-indication possegravede une importance et il nexiste pas deux contre-indications associeacutees au mecircme meacutedicament avec la mecircme importanceTout meacutedicament possegravede au moins un composant souvent plusieurs Un composant est identifieacute par un code unique et possegravede un intituleacute Tout composant peut intervenir dans la fabrication de plusieurs meacutedicaments Il existe des composants qui ne sont pas utiliseacutes pour fabriquer des meacutedicaments et que lon veut quand mecircme geacuterer

Donneacutees de test

Afin de mateacuterialiser notre base de donneacutees nous obtenons les descriptions suivantes

Le a pour description courte et pour description longue Chourix Meacutedicament contre la chute des chouxlaquo raquoVivamus fermentum semper porta Nunc diam velit adipiscing ut tristique vitae sagittis vel odio laquo

Il est conditionneacute en boicircte de 13Maecenas convallis ullamcorper ultricies Curabitur ornare raquoSes contre-indications sont

Le Chourix ne doit jamais ecirctre pris apregraves minuitLe Chourix ne doit jamais ecirctre mis au contact avec de leau

Ses composants sont le et le HG79 SN50Le a pour description courte et pour Tropas Meacutedicament contre les dysfonctionnements intellectuelslaquo raquodescription longue Suspendisse lectus leo consectetur in tempor sit amet placerat quis neque Etiam laquo

Il est conditionneacute en boicircte de 42luctus porttitor lorem sed suscipit est rutrum non raquoSes contre-indications sont

Le Tropas doit ecirctre gardeacute agrave labri de la lumiegravere du soleil

Son unique composant est le HG79Les composants existants sont

HG79 Vif-argent alleacutegeacute

ExercicesII

Exercice Eacutetudiants et UVs (introduction)

31

- - -

- - HG81 Vif-argent alourdi

SN50 Pur eacutetain

Question 1

Question 2

Question 3

2 Exercice Eacutetudiants et UVs (introduction)[20 min]

On dispose du scheacutema UML ci-apregraves qui deacutecrit des eacutetudiants des UV les notes obtenues par les eacutetudiants agrave ces UV et les diplocircmes dorigine de ces eacutetudiants

Eacutetudiants et UVs

key deacutesigne des cleacutes candidates ici toutes les cleacutes ne sont composeacutees que dun seul attributlocal key deacutesigne une cleacute localeun semestre est de la forme PYYYY ou AYYYY (ougrave YYYY deacutesigneacute une anneacutee sur 4 chiffre) exemple A2013 P2014

Rappel Notion de cleacute locale dans classes dassociation (cf p49)

Effectuez le modegravele conceptuel en UML de ce problegraveme

Indices

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans deacutedieacuteeles donneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition

[ ]solution ndeg4 [ ] p56

En mobilisant les regravegles adeacutequates proposer un modegravele logique de donneacutees correspondant en relationnel Le repeacuterage des domaines et des cleacutes est obligatoire

[ ]solution ndeg5 [ ] p57

Dessiner des tableaux remplis avec les donneacutees fournies en exemple afin de montrer que le modegravele fonctionne selon le besoin exprimeacute initialement On pourra mettre le premier mot seulement des descriptions pour gagner du temps

[ ]solution ndeg6 [ ] p57

Exercice Super-heacuteros relationnels I

32

-

-

Question

3 Exercice Super-heacuteros relationnels I[20 min]

La gamme de super-heacuteros GARVEL veut reacutealiser la base de donneacutees de leurs figurines articuleacutees La socieacuteteacute a fait reacutealiser un modegravele UML qui doit servir de point de deacutepart agrave la mise en œuvre

Modegravele UML Figurines GARVEL

Question

4 Exercice Objets Numeacuteriques Libres[30 min]

Lassociation ONL (Objets Numeacuteriques Libres) est une association de promotion des logiciels libres Elle souhaite exposer sur un site Internet une liste de logiciels libres Ce site sera adosseacute agrave une base de donneacutees relationnelle ou relationnel-objet La premiegravere eacutetape de sa deacutemarche est de reacutealiser un modegravele conceptuel repreacutesentant ce quelle souhaite faire

La base de donneacutees permet de geacuterer des applicationsLes applications sont identifieacutees par leur nom (LibreOffice Gimp) et leur version (10 21) et comportent une description courte et une URL Tous les attributs sont obligatoires Chaque application a une URL uniqueLa base de donneacutees permet de geacuterer des librairies

Traduire le scheacutema en modegravele logique relationnel ( )MLD1

On choisira obligatoirement les cleacutes primaires parmi celles neacutecessitant le plus petit nombre de bits possible pour leur codage

[ ]solution ndeg7 [ ] p57

Transformer le modegravele UML en modegravele relationnel (justifier les passages non triviaux en particulier la relation dheacuteritage)

[ ]solution ndeg8 [ ] p58

Exercice Objets Numeacuteriques Libres

33

-

-

-

-

-

-

-

-

-

-

-

-

Les librairies sont des logiciels mais pas des applications Elles ont les mecircmes attributs que les applications (nom version description courte URL) mais les URL ne sont pas neacutecessairement uniques Les applications peuvent deacutependre de librairies ou dautres applications et les librairies peuvent deacutependre dautres librairies (mais pas dune application)La base de donneacutees permet de geacuterer des composantsLes composants sont inteacutegreacutes agrave une application ou librairie Les composants ont un code interne agrave lapplication ou la librairie quil servent une version et une description courte et une URL Le code et le numeacutero de version permettent didentifier localement le composant au sein de la librairie ou de lapplication la description courte et lURL sont optionnellesLa base de donneacutees permet de geacuterer des licencesLes applications librairies et composants sont attacheacutes agrave une ou plusieurs licences identifieacutees par leur nom (GPL MPL) leur version et leur langue et comportant le texte inteacutegral de la licence Les versions des logiciels et licences sont de type numeacutero de licence majeur point numeacutero de licence mineur comme 10 ou 22La base de donneacutees permet de geacuterer des cateacutegoriesChaque logiciel est rangeacute dans une cateacutegorie principale et plusieurs cateacutegories secondaires Exemple de cateacutegories bureautique dessin multimeacutedia physique

Exemple (factice) de donneacutees

Applications

Scenari 41 une chaicircne eacuteditoriale XML httpscenariorg deacutepend de Libreoffice 43 et de ImageMagick 68Libreoffice 43 une suite bureautique WYSIWYG httplibreofficeorg

Librairie

ImageMagick 68 permet de creacuteer de convertir de modifier et dafficher des images http imagemagickorg

Composant

impng 02 est un composant de ImageMagick 68 permet de compresser une image au format PNG

Toutes ces applications librairies et composants sont disponibles sous une licence LGPL 30 et GPL 30 franccedilaisesToutes ces applications et librairies sont rangeacutees dans la cateacutegorie principale document Scenari est rangeacute dans la cateacutegorie secondaire Eacutedition WYSIWYM Libreoffice dans la cateacutegorie secondaire Bureautique ImageMagick dans la cateacutegorie secondaire Multimeacutedia

Question

Reacutealiser un MCD en UML[ ]solution ndeg9 [ ] p58

Devoirs

34

1 Exercice Arbre de scegravene 3D[30 minutes]

On souhaite pouvoir geacuterer les diffeacuterents eacuteleacutements composant des scegravenes 3D dans une base de donneacutees Une scegravene contient des objets qui eux-mecircmes peuvent appartenir agrave plusieurs scegravenes (au moins une) mais il ne peut y avoir plusieurs fois le mecircme objet dans une mecircme scegravene Dans chaque scegravene les objets peuvent ecirctre visibles ou invisibles Les scegravenes et les objets sont identifieacutes de maniegravere unique par un nom Une scegravene peut ecirctre active ou inactive Un objet a comme proprieacuteteacute une position dans lespace repreacutesenteacutee par un vecteur de reacuteels agrave trois composantes (x y z) Les objets sont organiseacutes de maniegravere hieacuterarchique un objet peut ecirctre parent de plusieurs objets et chaque objet peut avoir au plus un parent Des scripts peuvent ecirctre associeacutes agrave un objet ou agrave une scegravene (agrave lun ou agrave lautre mais pas aux deux) Un script est identifieacute de maniegravere unique par un nom et possegravede eacutegalement un attribut permettant de connaicirctre son eacutetat (actif ou inactif) Un personnage est un objet particulier qui possegravede des animations Une animation est relative agrave un personnage et est identifieacutee de maniegravere locale par un nom Agrave un objet est associeacute un maillage et celui-ci peut ecirctre utiliseacute par plusieurs objets Un maillage est identifieacute de maniegravere unique par un nom et est composeacute de plusieurs eacuteleacutements Chaque eacuteleacutement est relatif agrave un maillage et est identifieacute de maniegravere locale par un numeacutero Il existe exactement trois types deacuteleacutement des nœuds des arrecirctes et des faces Une face est deacutelimiteacutee par trois arrecirctes et chaque arrecircte est deacutelimiteacutee par deux nœuds Plusieurs arrecirctes peuvent partager un mecircme nœud et plusieurs faces peuvent partager une mecircme arrecircte Afin deacutevaluer la complexiteacute dune scegravene on souhaite pouvoir calculer le nombre de faces afficheacutees pour une scegravene donneacutee (cest-agrave-dire la somme du nombre de faces du maillage associeacute aux objets visibles de la scegravene) Un maillage possegravede plusieurs mateacuteriaux identifieacutes de maniegravere unique par un nom Un mateacuteriau peut ecirctre associeacute agrave plusieurs maillages Un mateacuteriau est caracteacuteriseacute par une couleur deacutefinie par un vecteur dentiers agrave quatre composantes rouge vert bleu alpha Un mateacuteriau peut posseacuteder une texture et celle-ci peut ecirctre utiliseacutee par plusieurs mateacuteriaux Une texture est identifieacutee de maniegravere unique par un nom et possegravede comme attribut une image

Question 1

Question 2

DevoirsIII

Proposez une clarification de ce problegraveme On pourra reclasser les informations par grande cateacutegorie scegravene objets scripts

Eacutetablissez un modegravele conceptuel en UML de ce problegraveme

Compleacutement Exercices de modeacutelisation suppleacutementaire

35

1 Exercice Appartements agrave louer[30 min]

Une agence dimmobilier (ventes et locations) veut geacuterer son parc dappartements dans une base de donneacutees Chaque appartement possegravede plusieurs piegraveces qui peuvent ecirctre des piegraveces dhabitation des piegraveces de rangement ou des commoditeacutes

Chaque piegravece a une superficie un nombre de prises eacutelectriques et des meubles Pour ces derniers on veut enregistrer le nom du modegravele et le type (chaise lit four etc) Rien nempecircche quune piegravece comporte plusieurs meubles identiques (par exemple plusieurs chaises PIN IQUEA) Les piegraveces dhabitation ont une ou plusieurs fenecirctres les piegraveces de rangement ont une ou plusieurs eacutetagegraveres et une surface de rangement utile totale On veut aussi savoir dans quelles piegraveces de rangement se situent les tableaux eacutelectriques de lappartement Finalement les piegraveces commoditeacutes peuvent ecirctre de trois types cuisine toilette ou salle de bain

Lagence veut aussi enregistrer les portes entre les diffeacuterentes piegraveces Une porte peut ecirctre agrave simple battant double battant coulissante ou une simple ouverture

Chaque appartement a une adresse une superficie totale (qui est la somme des superficies des piegraveces) et un type qui est la lettre T suivie du nombre de piegraveces dhabitation de lappartement Pour un appartement donneacute chaque piegravece est identifieacutee par un numeacutero (commenccedilant au numeacutero 1)

Lagence veut eacutegalement enregistrer le quartier ougrave se trouve lappartement auquel est lieacute un prix par megravetre carreacute Finalement elle veut garder un historique de lhistoire de lappartement les peacuteriodes pour lesquelles il est libre occupeacute en travaux ou vendu

Question

2 Exercice Objectifs[40 min]

Vous prenez la preacutesidence de lassociation Objectifs dont lobjet est daider ses eacutetudiants membres agrave mener des projets dans le cadre de leurs eacutetudes

Compleacutement Exercices de modeacutelisation suppleacutementaire

IV

Reacutealisez le diagramme UML reacutepondant aux besoins de cette agence[ ]solution ndeg10 [ ] p59

Exercice Objectifs

36

- - -

-

-

- - -

Vous constatez en arrivant dans lassociation que personne ne sait exactement quels sont les projets en cours ni qui fait quoi dans les projets Vous ne parvenez pas non plus agrave obtenir une liste exacte des partenaires sur lesquels lassociation peut compter La seule chose sur laquelle vous parvenez agrave mettre la main est un fichier tableur vaguement agrave jour

Vous deacutecidez quil est plus que temps de mettre en place une base de donneacutees afin dassurer la bonne gestion des informations les plus importantes pour lassociation Vous vous attachez pour cela agrave reacutealiser une analyse des besoins

Analysez les documents ci-apregraves

Etat des projets

Eacutetat des projets de lassociation Objectifs

Recueil de besoins

Agrave partir de leacutetude du fonctionnement actuel de lassociation vous relevez les choses importantes agrave geacuterer suivantes

Les membres de lassociation geacuteneacuteralement identifieacutes par leur preacutenomLes projets geacutereacutes par lassociation avec des dates de deacutebut et de fin preacutecises et un chef de projetLe deacutetail des tacircches de chaque projet avec leurs dates de deacutebut et de fin aussi et la liste de tous les membres qui y participentLa liste des partenaires des projets avec leur rocircle preacutecis pour chacun des projets auxquels ils participent

Afin de mieux geacuterer les attributions des projets il serait eacutegalement inteacuteressant de creacuteer une liste des speacutecialiteacutes correspondant agrave ce qui ce fait dans lassociation et daffecter une speacutecialiteacute agrave chaque membre ainsi quune agrave chaque projet pour voir si ce sont bien les membres les mieux adapteacutes qui travaille sur les projets

Recueil de donneacutees

Les discussions avec les anciens membres de lassociation vous apprennent les choses suivantes

Lassociation a termineacute de geacuterer les trois projets Comeacutedie Musicale geacutereacutee par Nathalie sur les trois premiers mois du semestre dautomne 1001 Science en fecircte geacutereacutee par Pierre sur tout le semestre de printemps 1003 et Nuit du picolo geacutereacutee par Julien en novembre 1001Les speacutecialiteacutes recenseacutees pour le moment sont Ville Universiteacute Sport Entreprise Culture InternationalIl faut au moins dix membres agrave lassociation (sinon elle ferme) recruter ceux qui manquentAidez lassociation agrave diviser ses projets en tacircches

Exercice Objectifs

37

- Les partenaires suivants aident ou ont aideacute lassociation la mairie pour la comeacutedie musicale et la science en fecircte qui apporte un soutien financier le ministegravere de la culture qui apporte son soutien logistique agrave la science en fecircte lassociation des commerccedilants de la ville qui apporte son soutien publicitaire agrave la comeacutedie musicale 1664 qui offre ses biegraveres agrave moitieacute prix pour la nuit du Picolo

Question 1

Question 2

Question 3

Afin de preacuteparer une analyse des besoins sommaire listez les donneacutees que vous devrez geacuterer agrave laide des documents et recueils de discussion agrave votre disposition Faites des hypothegraveses lorsque les donneacutees sont incomplegravetes ou incoheacuterentes

[ ]solution ndeg11 [ ] p59

Reacutealiser le MCD en UML et en E-A agrave partir des donneacutees preacutepareacutees dans la question preacuteceacutedente[ ]solution ndeg12 [ ] p60

Reacutealiser le MLD en relationnel en traduisant votre MCD[ ]solution ndeg13 [ ] p61

Contenus annexes

38Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

- - -

gt Attributs

Un attribut est une information eacuteleacutementaire qui caracteacuterise une classe et dont la valeur deacutepend de lobjet instancieacute

Le domaine des valeurs que peut prendre lattribut est fixeacute a prioriUn attribut est typeacute

Il peut prendre plusieurs valeurs distinctes dans son domaineUn attribut peut ecirctre multivalueacute Sa valeur alors est une fonction sur dautres attributs de la classeUn attribut peut ecirctre deacuteriveacute

(ou composite) Il joue alors le rocircle dun groupe dattributs (par Un attribut peut ecirctre composeacuteexemple une adresse peut ecirctre un attribut composeacute des attributs numeacutero type de voie nom de la voie) Cette notion renvoie agrave la notion de variable de type dans les langages de Record

programmation classiques

En UML on preacutefegravere lusage de meacutethodes aux attributs deacuteriveacutes On utilisera toujours des meacutethodes degraves que la valeur de lattribut deacuteriveacute deacutepend dautres attributs exteacuterieurs agrave sa classeEn UML on preacutefegravere lusage de compositions aux attributs composeacutes On utilisera toujours des compositions pour les attributs composeacutes et multivalueacutes

1 attributtype2 attribut_multivalueacute[nbMinValeursnbMaxValeurs]type3 attribut_deacuteriveacutetype4 attribut_composeacute5   - sous-attribut1type6   - sous-attribut2type7   -

Contenus annexes

Deacutefinition Attribut

Attention On utilise peu les attributs deacuteriveacutes et composeacutes en UML

Syntaxe

attributtype

attribut_multivalueacute[nbMinValeursnbMaxValeurs]type

attribut_deacuteriveacutetype

attribut_composeacute

  - sous-attribut1type

  - sous-attribut2type

  -

Contenus annexes

39Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Repreacutesentation dattributs en UML

Dans cet exemple les attributs Nom Preacutenom sont de type lun de 20 caractegraveres et lautre de 10 stringtandis que DateNaissance est de type et Age de type Preacutenom est un attribut multivalueacute ici date integerune personne peut avoir de 1 agrave 3 preacutenoms Age est un attribut deacuteriveacute il est calculeacute par une fonction sur DateNaissance

Meacutethodes (cf p39)

Composition (cf p5)

gt Meacutethodes

Une meacutethode (ou opeacuteration) est une fonction associeacutee agrave une classe dobjet qui permet dagir sur les objets de la classe ou qui permet agrave ces objets de renvoyer des valeurs (calculeacutees en fonction de paramegravetres)

1 methode(paramegravetres)type

Pour la modeacutelisation des bases de donneacutees les meacutethodes sont surtout utiliseacutees pour repreacutesenter des donneacutees calculeacutees (agrave linstar des attributs deacuteriveacutees) ou pour mettre en exergue des fonctions importantes du systegraveme cible Seules les meacutethodes les plus importantes sont repreacutesenteacutees lapproche est moins systeacutematique quen modeacutelisation objet par exemple

Lors de la transformation du modegravele conceptuel UML en modegravele logique relationnel les meacutethodes ne Leur repeacuterage au niveau conceptuel sert donc surtout daide-seront geacuteneacuteralement pas impleacutementeacutees

meacutemoire pour limpleacutementation au niveau applicatif

Exemple La classe Personne

Compleacutement Voir aussi

Deacutefinition Meacutethode

Syntaxe

Remarque Meacutethodes et modeacutelisation de BD

Remarque Meacutethodes relationnel relationnel-objet

methode(paramegravetres)type

Contenus annexes

40Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Au contraire un modegravele logique relationnel-objet permettra limpleacutementation de meacutethodes directement associeacutees agrave des tables Leur repeacuterage au niveau conceptuel est donc encore plus important

Transformation des meacutethodes par des vues (cf p40)

gt Transformation des meacutethodes par des vues

Lorsquune meacutethode est speacutecifieacutee sur un diagramme UML pour une classe C si cette meacutethode est une fonction relationnelle (elle renvoie une unique valeur et elle peut ecirctre reacutesolue par une requecircte SQL) alors on creacutee une vue qui reprend les attributs de la classe C et ajoute des colonnes calculeacutees pour les meacutethodes

Les attributs deacuteriveacutes eacutetant apparenteacutes agrave des meacutethodes ils peuvent eacutegalement ecirctre geacutereacutes par des vues

gt Classe dassociation

On utilise la notation des classes dassociation lorsque lon souhaite ajouter des proprieacuteteacutes agrave une association

Notation dune classe dassociation en UML

On reacuteserve en geacuteneacuteral les classes dassociation aux associations NM

Il est toujours possible de reacuteduire une classe dassociation sur une association 1N en migrant ses attributs sur la classe cocircteacute N et cest en geacuteneacuteral plus lisible ainsi

Compleacutement

Meacutethode

Remarque Attributs deacuteriveacutes

Deacutefinition Classe dassociation

Syntaxe Notation dune classe dassociation en UML

Meacutethode

Contenus annexes

41Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

-

Emplois

Selon le standard UML une classe dassociation est une classe et agrave ce titre elle peut ecirctre mobiliseacutee dans dautres associations ou dans des heacuteritages Nous deacuteconseillons neacuteanmoins ces notations qui ont tendance agrave complexifier la lecture et la transformation du diagramme

Nous conseillons donc de ne jamais associer une classe dassociation

gt Transformation des attributs

Pour chaque attribut eacuteleacutementaire et monovalueacute dune classe

on creacutee un attribut correspondant

Attribut

Classe1(ab)

Pour chaque attribut composite comprenant N sous-attributs dune classe

on creacutee N attributs correspondantsdont les noms sont la concateacutenation du nom de lattribut composite avec celui du sous-attribut

Exemple Exemple de classe dassociation

Conseil

Meacutethode Attributs simples

Meacutethode Attributs composites

Contenus annexes

42Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- - - -

Attribut composeacute

Classe1(ab_b1b_b2)

Pour chaque attribut multivalueacute b dune classe C

on creacutee une nouvelle relation RBqui comprend un attribut monovalueacute correspondant agrave bplus la cleacute de la relation repreacutesentant C la cleacute de RB est la concateacutenation des deux attributs

Attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Dans le cas ougrave le nombre maximum de est fini et petit on peut eacutegalement adopter la transformation b

suivante Classe1(ab1b2b3b4b5b6b7b8b9b10)

Si le nombre dattributs est infini ( ) cest impossible sil est trop grand ce nest pas souhaitableb[1]

On combine les regravegles eacutenonceacutees pour les attributs composeacutes et pour les attributs multivalueacutes

Attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Transformation des compositions (cf p42)

Meacutethode Attributs multivalueacutes

Meacutethode Attributs multivalueacutes (meacutethode alternative)

Meacutethode Attributs composeacutes multivalueacutes

Rappel Voir aussi

Contenus annexes

43Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

gt Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Compleacutement Attributs multivalueacutes et composeacutes

Contenus annexes

44Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

Rappel Voir aussi

Rappel

Meacutethode

Contenus annexes

45Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p48)

gt Transformation des associations 1N

Pour chaque association binaire de type 1N

on ajoute agrave la relation cocircteacute N une cleacute eacutetrangegravere vers la relation cocircteacute 1

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Meacutethode

Contenus annexes

46Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Association 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Contrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p46)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

R1

Compleacutement

Rappel

Meacutethode

Contenus annexes

47Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p47)

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Deacutefinition Projection

Contenus annexes

48Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Deacutefinition Projection

Contenus annexes

49Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Transformation des classes dassociation

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de lassociation NM

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Meacutethode Classe dassociation NM

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Exercices

30

-

-

-

-

-

-

-

1 2

1

1 Exercice Lab III[20 min]

Description du problegraveme

Un laboratoire souhaite geacuterer les meacutedicaments quil conccediloit

Un meacutedicament est deacutecrit par un nom qui permet de lidentifier En effet il nexiste pas deux meacutedicaments avec le mecircme nom Un meacutedicament comporte une description courte en franccedilais ainsi quune description longue en latin On gegravere aussi le conditionnement du meacutedicament cest agrave dire le nombre de pilules par boicircte (qui est un nombre entier)Agrave chaque meacutedicament on associe une liste deacutedieacutee de contre-indications geacuteneacuteralement plusieurs parfois aucune Les contre-indications sont trieacutees par ordre dimportance Lordre est total est strict pour un meacutedicament donc chaque contre-indication possegravede une importance et il nexiste pas deux contre-indications associeacutees au mecircme meacutedicament avec la mecircme importanceTout meacutedicament possegravede au moins un composant souvent plusieurs Un composant est identifieacute par un code unique et possegravede un intituleacute Tout composant peut intervenir dans la fabrication de plusieurs meacutedicaments Il existe des composants qui ne sont pas utiliseacutes pour fabriquer des meacutedicaments et que lon veut quand mecircme geacuterer

Donneacutees de test

Afin de mateacuterialiser notre base de donneacutees nous obtenons les descriptions suivantes

Le a pour description courte et pour description longue Chourix Meacutedicament contre la chute des chouxlaquo raquoVivamus fermentum semper porta Nunc diam velit adipiscing ut tristique vitae sagittis vel odio laquo

Il est conditionneacute en boicircte de 13Maecenas convallis ullamcorper ultricies Curabitur ornare raquoSes contre-indications sont

Le Chourix ne doit jamais ecirctre pris apregraves minuitLe Chourix ne doit jamais ecirctre mis au contact avec de leau

Ses composants sont le et le HG79 SN50Le a pour description courte et pour Tropas Meacutedicament contre les dysfonctionnements intellectuelslaquo raquodescription longue Suspendisse lectus leo consectetur in tempor sit amet placerat quis neque Etiam laquo

Il est conditionneacute en boicircte de 42luctus porttitor lorem sed suscipit est rutrum non raquoSes contre-indications sont

Le Tropas doit ecirctre gardeacute agrave labri de la lumiegravere du soleil

Son unique composant est le HG79Les composants existants sont

HG79 Vif-argent alleacutegeacute

ExercicesII

Exercice Eacutetudiants et UVs (introduction)

31

- - -

- - HG81 Vif-argent alourdi

SN50 Pur eacutetain

Question 1

Question 2

Question 3

2 Exercice Eacutetudiants et UVs (introduction)[20 min]

On dispose du scheacutema UML ci-apregraves qui deacutecrit des eacutetudiants des UV les notes obtenues par les eacutetudiants agrave ces UV et les diplocircmes dorigine de ces eacutetudiants

Eacutetudiants et UVs

key deacutesigne des cleacutes candidates ici toutes les cleacutes ne sont composeacutees que dun seul attributlocal key deacutesigne une cleacute localeun semestre est de la forme PYYYY ou AYYYY (ougrave YYYY deacutesigneacute une anneacutee sur 4 chiffre) exemple A2013 P2014

Rappel Notion de cleacute locale dans classes dassociation (cf p49)

Effectuez le modegravele conceptuel en UML de ce problegraveme

Indices

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans deacutedieacuteeles donneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition

[ ]solution ndeg4 [ ] p56

En mobilisant les regravegles adeacutequates proposer un modegravele logique de donneacutees correspondant en relationnel Le repeacuterage des domaines et des cleacutes est obligatoire

[ ]solution ndeg5 [ ] p57

Dessiner des tableaux remplis avec les donneacutees fournies en exemple afin de montrer que le modegravele fonctionne selon le besoin exprimeacute initialement On pourra mettre le premier mot seulement des descriptions pour gagner du temps

[ ]solution ndeg6 [ ] p57

Exercice Super-heacuteros relationnels I

32

-

-

Question

3 Exercice Super-heacuteros relationnels I[20 min]

La gamme de super-heacuteros GARVEL veut reacutealiser la base de donneacutees de leurs figurines articuleacutees La socieacuteteacute a fait reacutealiser un modegravele UML qui doit servir de point de deacutepart agrave la mise en œuvre

Modegravele UML Figurines GARVEL

Question

4 Exercice Objets Numeacuteriques Libres[30 min]

Lassociation ONL (Objets Numeacuteriques Libres) est une association de promotion des logiciels libres Elle souhaite exposer sur un site Internet une liste de logiciels libres Ce site sera adosseacute agrave une base de donneacutees relationnelle ou relationnel-objet La premiegravere eacutetape de sa deacutemarche est de reacutealiser un modegravele conceptuel repreacutesentant ce quelle souhaite faire

La base de donneacutees permet de geacuterer des applicationsLes applications sont identifieacutees par leur nom (LibreOffice Gimp) et leur version (10 21) et comportent une description courte et une URL Tous les attributs sont obligatoires Chaque application a une URL uniqueLa base de donneacutees permet de geacuterer des librairies

Traduire le scheacutema en modegravele logique relationnel ( )MLD1

On choisira obligatoirement les cleacutes primaires parmi celles neacutecessitant le plus petit nombre de bits possible pour leur codage

[ ]solution ndeg7 [ ] p57

Transformer le modegravele UML en modegravele relationnel (justifier les passages non triviaux en particulier la relation dheacuteritage)

[ ]solution ndeg8 [ ] p58

Exercice Objets Numeacuteriques Libres

33

-

-

-

-

-

-

-

-

-

-

-

-

Les librairies sont des logiciels mais pas des applications Elles ont les mecircmes attributs que les applications (nom version description courte URL) mais les URL ne sont pas neacutecessairement uniques Les applications peuvent deacutependre de librairies ou dautres applications et les librairies peuvent deacutependre dautres librairies (mais pas dune application)La base de donneacutees permet de geacuterer des composantsLes composants sont inteacutegreacutes agrave une application ou librairie Les composants ont un code interne agrave lapplication ou la librairie quil servent une version et une description courte et une URL Le code et le numeacutero de version permettent didentifier localement le composant au sein de la librairie ou de lapplication la description courte et lURL sont optionnellesLa base de donneacutees permet de geacuterer des licencesLes applications librairies et composants sont attacheacutes agrave une ou plusieurs licences identifieacutees par leur nom (GPL MPL) leur version et leur langue et comportant le texte inteacutegral de la licence Les versions des logiciels et licences sont de type numeacutero de licence majeur point numeacutero de licence mineur comme 10 ou 22La base de donneacutees permet de geacuterer des cateacutegoriesChaque logiciel est rangeacute dans une cateacutegorie principale et plusieurs cateacutegories secondaires Exemple de cateacutegories bureautique dessin multimeacutedia physique

Exemple (factice) de donneacutees

Applications

Scenari 41 une chaicircne eacuteditoriale XML httpscenariorg deacutepend de Libreoffice 43 et de ImageMagick 68Libreoffice 43 une suite bureautique WYSIWYG httplibreofficeorg

Librairie

ImageMagick 68 permet de creacuteer de convertir de modifier et dafficher des images http imagemagickorg

Composant

impng 02 est un composant de ImageMagick 68 permet de compresser une image au format PNG

Toutes ces applications librairies et composants sont disponibles sous une licence LGPL 30 et GPL 30 franccedilaisesToutes ces applications et librairies sont rangeacutees dans la cateacutegorie principale document Scenari est rangeacute dans la cateacutegorie secondaire Eacutedition WYSIWYM Libreoffice dans la cateacutegorie secondaire Bureautique ImageMagick dans la cateacutegorie secondaire Multimeacutedia

Question

Reacutealiser un MCD en UML[ ]solution ndeg9 [ ] p58

Devoirs

34

1 Exercice Arbre de scegravene 3D[30 minutes]

On souhaite pouvoir geacuterer les diffeacuterents eacuteleacutements composant des scegravenes 3D dans une base de donneacutees Une scegravene contient des objets qui eux-mecircmes peuvent appartenir agrave plusieurs scegravenes (au moins une) mais il ne peut y avoir plusieurs fois le mecircme objet dans une mecircme scegravene Dans chaque scegravene les objets peuvent ecirctre visibles ou invisibles Les scegravenes et les objets sont identifieacutes de maniegravere unique par un nom Une scegravene peut ecirctre active ou inactive Un objet a comme proprieacuteteacute une position dans lespace repreacutesenteacutee par un vecteur de reacuteels agrave trois composantes (x y z) Les objets sont organiseacutes de maniegravere hieacuterarchique un objet peut ecirctre parent de plusieurs objets et chaque objet peut avoir au plus un parent Des scripts peuvent ecirctre associeacutes agrave un objet ou agrave une scegravene (agrave lun ou agrave lautre mais pas aux deux) Un script est identifieacute de maniegravere unique par un nom et possegravede eacutegalement un attribut permettant de connaicirctre son eacutetat (actif ou inactif) Un personnage est un objet particulier qui possegravede des animations Une animation est relative agrave un personnage et est identifieacutee de maniegravere locale par un nom Agrave un objet est associeacute un maillage et celui-ci peut ecirctre utiliseacute par plusieurs objets Un maillage est identifieacute de maniegravere unique par un nom et est composeacute de plusieurs eacuteleacutements Chaque eacuteleacutement est relatif agrave un maillage et est identifieacute de maniegravere locale par un numeacutero Il existe exactement trois types deacuteleacutement des nœuds des arrecirctes et des faces Une face est deacutelimiteacutee par trois arrecirctes et chaque arrecircte est deacutelimiteacutee par deux nœuds Plusieurs arrecirctes peuvent partager un mecircme nœud et plusieurs faces peuvent partager une mecircme arrecircte Afin deacutevaluer la complexiteacute dune scegravene on souhaite pouvoir calculer le nombre de faces afficheacutees pour une scegravene donneacutee (cest-agrave-dire la somme du nombre de faces du maillage associeacute aux objets visibles de la scegravene) Un maillage possegravede plusieurs mateacuteriaux identifieacutes de maniegravere unique par un nom Un mateacuteriau peut ecirctre associeacute agrave plusieurs maillages Un mateacuteriau est caracteacuteriseacute par une couleur deacutefinie par un vecteur dentiers agrave quatre composantes rouge vert bleu alpha Un mateacuteriau peut posseacuteder une texture et celle-ci peut ecirctre utiliseacutee par plusieurs mateacuteriaux Une texture est identifieacutee de maniegravere unique par un nom et possegravede comme attribut une image

Question 1

Question 2

DevoirsIII

Proposez une clarification de ce problegraveme On pourra reclasser les informations par grande cateacutegorie scegravene objets scripts

Eacutetablissez un modegravele conceptuel en UML de ce problegraveme

Compleacutement Exercices de modeacutelisation suppleacutementaire

35

1 Exercice Appartements agrave louer[30 min]

Une agence dimmobilier (ventes et locations) veut geacuterer son parc dappartements dans une base de donneacutees Chaque appartement possegravede plusieurs piegraveces qui peuvent ecirctre des piegraveces dhabitation des piegraveces de rangement ou des commoditeacutes

Chaque piegravece a une superficie un nombre de prises eacutelectriques et des meubles Pour ces derniers on veut enregistrer le nom du modegravele et le type (chaise lit four etc) Rien nempecircche quune piegravece comporte plusieurs meubles identiques (par exemple plusieurs chaises PIN IQUEA) Les piegraveces dhabitation ont une ou plusieurs fenecirctres les piegraveces de rangement ont une ou plusieurs eacutetagegraveres et une surface de rangement utile totale On veut aussi savoir dans quelles piegraveces de rangement se situent les tableaux eacutelectriques de lappartement Finalement les piegraveces commoditeacutes peuvent ecirctre de trois types cuisine toilette ou salle de bain

Lagence veut aussi enregistrer les portes entre les diffeacuterentes piegraveces Une porte peut ecirctre agrave simple battant double battant coulissante ou une simple ouverture

Chaque appartement a une adresse une superficie totale (qui est la somme des superficies des piegraveces) et un type qui est la lettre T suivie du nombre de piegraveces dhabitation de lappartement Pour un appartement donneacute chaque piegravece est identifieacutee par un numeacutero (commenccedilant au numeacutero 1)

Lagence veut eacutegalement enregistrer le quartier ougrave se trouve lappartement auquel est lieacute un prix par megravetre carreacute Finalement elle veut garder un historique de lhistoire de lappartement les peacuteriodes pour lesquelles il est libre occupeacute en travaux ou vendu

Question

2 Exercice Objectifs[40 min]

Vous prenez la preacutesidence de lassociation Objectifs dont lobjet est daider ses eacutetudiants membres agrave mener des projets dans le cadre de leurs eacutetudes

Compleacutement Exercices de modeacutelisation suppleacutementaire

IV

Reacutealisez le diagramme UML reacutepondant aux besoins de cette agence[ ]solution ndeg10 [ ] p59

Exercice Objectifs

36

- - -

-

-

- - -

Vous constatez en arrivant dans lassociation que personne ne sait exactement quels sont les projets en cours ni qui fait quoi dans les projets Vous ne parvenez pas non plus agrave obtenir une liste exacte des partenaires sur lesquels lassociation peut compter La seule chose sur laquelle vous parvenez agrave mettre la main est un fichier tableur vaguement agrave jour

Vous deacutecidez quil est plus que temps de mettre en place une base de donneacutees afin dassurer la bonne gestion des informations les plus importantes pour lassociation Vous vous attachez pour cela agrave reacutealiser une analyse des besoins

Analysez les documents ci-apregraves

Etat des projets

Eacutetat des projets de lassociation Objectifs

Recueil de besoins

Agrave partir de leacutetude du fonctionnement actuel de lassociation vous relevez les choses importantes agrave geacuterer suivantes

Les membres de lassociation geacuteneacuteralement identifieacutes par leur preacutenomLes projets geacutereacutes par lassociation avec des dates de deacutebut et de fin preacutecises et un chef de projetLe deacutetail des tacircches de chaque projet avec leurs dates de deacutebut et de fin aussi et la liste de tous les membres qui y participentLa liste des partenaires des projets avec leur rocircle preacutecis pour chacun des projets auxquels ils participent

Afin de mieux geacuterer les attributions des projets il serait eacutegalement inteacuteressant de creacuteer une liste des speacutecialiteacutes correspondant agrave ce qui ce fait dans lassociation et daffecter une speacutecialiteacute agrave chaque membre ainsi quune agrave chaque projet pour voir si ce sont bien les membres les mieux adapteacutes qui travaille sur les projets

Recueil de donneacutees

Les discussions avec les anciens membres de lassociation vous apprennent les choses suivantes

Lassociation a termineacute de geacuterer les trois projets Comeacutedie Musicale geacutereacutee par Nathalie sur les trois premiers mois du semestre dautomne 1001 Science en fecircte geacutereacutee par Pierre sur tout le semestre de printemps 1003 et Nuit du picolo geacutereacutee par Julien en novembre 1001Les speacutecialiteacutes recenseacutees pour le moment sont Ville Universiteacute Sport Entreprise Culture InternationalIl faut au moins dix membres agrave lassociation (sinon elle ferme) recruter ceux qui manquentAidez lassociation agrave diviser ses projets en tacircches

Exercice Objectifs

37

- Les partenaires suivants aident ou ont aideacute lassociation la mairie pour la comeacutedie musicale et la science en fecircte qui apporte un soutien financier le ministegravere de la culture qui apporte son soutien logistique agrave la science en fecircte lassociation des commerccedilants de la ville qui apporte son soutien publicitaire agrave la comeacutedie musicale 1664 qui offre ses biegraveres agrave moitieacute prix pour la nuit du Picolo

Question 1

Question 2

Question 3

Afin de preacuteparer une analyse des besoins sommaire listez les donneacutees que vous devrez geacuterer agrave laide des documents et recueils de discussion agrave votre disposition Faites des hypothegraveses lorsque les donneacutees sont incomplegravetes ou incoheacuterentes

[ ]solution ndeg11 [ ] p59

Reacutealiser le MCD en UML et en E-A agrave partir des donneacutees preacutepareacutees dans la question preacuteceacutedente[ ]solution ndeg12 [ ] p60

Reacutealiser le MLD en relationnel en traduisant votre MCD[ ]solution ndeg13 [ ] p61

Contenus annexes

38Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

- - -

gt Attributs

Un attribut est une information eacuteleacutementaire qui caracteacuterise une classe et dont la valeur deacutepend de lobjet instancieacute

Le domaine des valeurs que peut prendre lattribut est fixeacute a prioriUn attribut est typeacute

Il peut prendre plusieurs valeurs distinctes dans son domaineUn attribut peut ecirctre multivalueacute Sa valeur alors est une fonction sur dautres attributs de la classeUn attribut peut ecirctre deacuteriveacute

(ou composite) Il joue alors le rocircle dun groupe dattributs (par Un attribut peut ecirctre composeacuteexemple une adresse peut ecirctre un attribut composeacute des attributs numeacutero type de voie nom de la voie) Cette notion renvoie agrave la notion de variable de type dans les langages de Record

programmation classiques

En UML on preacutefegravere lusage de meacutethodes aux attributs deacuteriveacutes On utilisera toujours des meacutethodes degraves que la valeur de lattribut deacuteriveacute deacutepend dautres attributs exteacuterieurs agrave sa classeEn UML on preacutefegravere lusage de compositions aux attributs composeacutes On utilisera toujours des compositions pour les attributs composeacutes et multivalueacutes

1 attributtype2 attribut_multivalueacute[nbMinValeursnbMaxValeurs]type3 attribut_deacuteriveacutetype4 attribut_composeacute5   - sous-attribut1type6   - sous-attribut2type7   -

Contenus annexes

Deacutefinition Attribut

Attention On utilise peu les attributs deacuteriveacutes et composeacutes en UML

Syntaxe

attributtype

attribut_multivalueacute[nbMinValeursnbMaxValeurs]type

attribut_deacuteriveacutetype

attribut_composeacute

  - sous-attribut1type

  - sous-attribut2type

  -

Contenus annexes

39Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Repreacutesentation dattributs en UML

Dans cet exemple les attributs Nom Preacutenom sont de type lun de 20 caractegraveres et lautre de 10 stringtandis que DateNaissance est de type et Age de type Preacutenom est un attribut multivalueacute ici date integerune personne peut avoir de 1 agrave 3 preacutenoms Age est un attribut deacuteriveacute il est calculeacute par une fonction sur DateNaissance

Meacutethodes (cf p39)

Composition (cf p5)

gt Meacutethodes

Une meacutethode (ou opeacuteration) est une fonction associeacutee agrave une classe dobjet qui permet dagir sur les objets de la classe ou qui permet agrave ces objets de renvoyer des valeurs (calculeacutees en fonction de paramegravetres)

1 methode(paramegravetres)type

Pour la modeacutelisation des bases de donneacutees les meacutethodes sont surtout utiliseacutees pour repreacutesenter des donneacutees calculeacutees (agrave linstar des attributs deacuteriveacutees) ou pour mettre en exergue des fonctions importantes du systegraveme cible Seules les meacutethodes les plus importantes sont repreacutesenteacutees lapproche est moins systeacutematique quen modeacutelisation objet par exemple

Lors de la transformation du modegravele conceptuel UML en modegravele logique relationnel les meacutethodes ne Leur repeacuterage au niveau conceptuel sert donc surtout daide-seront geacuteneacuteralement pas impleacutementeacutees

meacutemoire pour limpleacutementation au niveau applicatif

Exemple La classe Personne

Compleacutement Voir aussi

Deacutefinition Meacutethode

Syntaxe

Remarque Meacutethodes et modeacutelisation de BD

Remarque Meacutethodes relationnel relationnel-objet

methode(paramegravetres)type

Contenus annexes

40Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Au contraire un modegravele logique relationnel-objet permettra limpleacutementation de meacutethodes directement associeacutees agrave des tables Leur repeacuterage au niveau conceptuel est donc encore plus important

Transformation des meacutethodes par des vues (cf p40)

gt Transformation des meacutethodes par des vues

Lorsquune meacutethode est speacutecifieacutee sur un diagramme UML pour une classe C si cette meacutethode est une fonction relationnelle (elle renvoie une unique valeur et elle peut ecirctre reacutesolue par une requecircte SQL) alors on creacutee une vue qui reprend les attributs de la classe C et ajoute des colonnes calculeacutees pour les meacutethodes

Les attributs deacuteriveacutes eacutetant apparenteacutes agrave des meacutethodes ils peuvent eacutegalement ecirctre geacutereacutes par des vues

gt Classe dassociation

On utilise la notation des classes dassociation lorsque lon souhaite ajouter des proprieacuteteacutes agrave une association

Notation dune classe dassociation en UML

On reacuteserve en geacuteneacuteral les classes dassociation aux associations NM

Il est toujours possible de reacuteduire une classe dassociation sur une association 1N en migrant ses attributs sur la classe cocircteacute N et cest en geacuteneacuteral plus lisible ainsi

Compleacutement

Meacutethode

Remarque Attributs deacuteriveacutes

Deacutefinition Classe dassociation

Syntaxe Notation dune classe dassociation en UML

Meacutethode

Contenus annexes

41Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

-

Emplois

Selon le standard UML une classe dassociation est une classe et agrave ce titre elle peut ecirctre mobiliseacutee dans dautres associations ou dans des heacuteritages Nous deacuteconseillons neacuteanmoins ces notations qui ont tendance agrave complexifier la lecture et la transformation du diagramme

Nous conseillons donc de ne jamais associer une classe dassociation

gt Transformation des attributs

Pour chaque attribut eacuteleacutementaire et monovalueacute dune classe

on creacutee un attribut correspondant

Attribut

Classe1(ab)

Pour chaque attribut composite comprenant N sous-attributs dune classe

on creacutee N attributs correspondantsdont les noms sont la concateacutenation du nom de lattribut composite avec celui du sous-attribut

Exemple Exemple de classe dassociation

Conseil

Meacutethode Attributs simples

Meacutethode Attributs composites

Contenus annexes

42Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- - - -

Attribut composeacute

Classe1(ab_b1b_b2)

Pour chaque attribut multivalueacute b dune classe C

on creacutee une nouvelle relation RBqui comprend un attribut monovalueacute correspondant agrave bplus la cleacute de la relation repreacutesentant C la cleacute de RB est la concateacutenation des deux attributs

Attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Dans le cas ougrave le nombre maximum de est fini et petit on peut eacutegalement adopter la transformation b

suivante Classe1(ab1b2b3b4b5b6b7b8b9b10)

Si le nombre dattributs est infini ( ) cest impossible sil est trop grand ce nest pas souhaitableb[1]

On combine les regravegles eacutenonceacutees pour les attributs composeacutes et pour les attributs multivalueacutes

Attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Transformation des compositions (cf p42)

Meacutethode Attributs multivalueacutes

Meacutethode Attributs multivalueacutes (meacutethode alternative)

Meacutethode Attributs composeacutes multivalueacutes

Rappel Voir aussi

Contenus annexes

43Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

gt Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Compleacutement Attributs multivalueacutes et composeacutes

Contenus annexes

44Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

Rappel Voir aussi

Rappel

Meacutethode

Contenus annexes

45Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p48)

gt Transformation des associations 1N

Pour chaque association binaire de type 1N

on ajoute agrave la relation cocircteacute N une cleacute eacutetrangegravere vers la relation cocircteacute 1

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Meacutethode

Contenus annexes

46Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Association 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Contrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p46)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

R1

Compleacutement

Rappel

Meacutethode

Contenus annexes

47Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p47)

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Deacutefinition Projection

Contenus annexes

48Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Deacutefinition Projection

Contenus annexes

49Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Transformation des classes dassociation

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de lassociation NM

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Meacutethode Classe dassociation NM

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Exercice Eacutetudiants et UVs (introduction)

31

- - -

- - HG81 Vif-argent alourdi

SN50 Pur eacutetain

Question 1

Question 2

Question 3

2 Exercice Eacutetudiants et UVs (introduction)[20 min]

On dispose du scheacutema UML ci-apregraves qui deacutecrit des eacutetudiants des UV les notes obtenues par les eacutetudiants agrave ces UV et les diplocircmes dorigine de ces eacutetudiants

Eacutetudiants et UVs

key deacutesigne des cleacutes candidates ici toutes les cleacutes ne sont composeacutees que dun seul attributlocal key deacutesigne une cleacute localeun semestre est de la forme PYYYY ou AYYYY (ougrave YYYY deacutesigneacute une anneacutee sur 4 chiffre) exemple A2013 P2014

Rappel Notion de cleacute locale dans classes dassociation (cf p49)

Effectuez le modegravele conceptuel en UML de ce problegraveme

Indices

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans deacutedieacuteeles donneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition

[ ]solution ndeg4 [ ] p56

En mobilisant les regravegles adeacutequates proposer un modegravele logique de donneacutees correspondant en relationnel Le repeacuterage des domaines et des cleacutes est obligatoire

[ ]solution ndeg5 [ ] p57

Dessiner des tableaux remplis avec les donneacutees fournies en exemple afin de montrer que le modegravele fonctionne selon le besoin exprimeacute initialement On pourra mettre le premier mot seulement des descriptions pour gagner du temps

[ ]solution ndeg6 [ ] p57

Exercice Super-heacuteros relationnels I

32

-

-

Question

3 Exercice Super-heacuteros relationnels I[20 min]

La gamme de super-heacuteros GARVEL veut reacutealiser la base de donneacutees de leurs figurines articuleacutees La socieacuteteacute a fait reacutealiser un modegravele UML qui doit servir de point de deacutepart agrave la mise en œuvre

Modegravele UML Figurines GARVEL

Question

4 Exercice Objets Numeacuteriques Libres[30 min]

Lassociation ONL (Objets Numeacuteriques Libres) est une association de promotion des logiciels libres Elle souhaite exposer sur un site Internet une liste de logiciels libres Ce site sera adosseacute agrave une base de donneacutees relationnelle ou relationnel-objet La premiegravere eacutetape de sa deacutemarche est de reacutealiser un modegravele conceptuel repreacutesentant ce quelle souhaite faire

La base de donneacutees permet de geacuterer des applicationsLes applications sont identifieacutees par leur nom (LibreOffice Gimp) et leur version (10 21) et comportent une description courte et une URL Tous les attributs sont obligatoires Chaque application a une URL uniqueLa base de donneacutees permet de geacuterer des librairies

Traduire le scheacutema en modegravele logique relationnel ( )MLD1

On choisira obligatoirement les cleacutes primaires parmi celles neacutecessitant le plus petit nombre de bits possible pour leur codage

[ ]solution ndeg7 [ ] p57

Transformer le modegravele UML en modegravele relationnel (justifier les passages non triviaux en particulier la relation dheacuteritage)

[ ]solution ndeg8 [ ] p58

Exercice Objets Numeacuteriques Libres

33

-

-

-

-

-

-

-

-

-

-

-

-

Les librairies sont des logiciels mais pas des applications Elles ont les mecircmes attributs que les applications (nom version description courte URL) mais les URL ne sont pas neacutecessairement uniques Les applications peuvent deacutependre de librairies ou dautres applications et les librairies peuvent deacutependre dautres librairies (mais pas dune application)La base de donneacutees permet de geacuterer des composantsLes composants sont inteacutegreacutes agrave une application ou librairie Les composants ont un code interne agrave lapplication ou la librairie quil servent une version et une description courte et une URL Le code et le numeacutero de version permettent didentifier localement le composant au sein de la librairie ou de lapplication la description courte et lURL sont optionnellesLa base de donneacutees permet de geacuterer des licencesLes applications librairies et composants sont attacheacutes agrave une ou plusieurs licences identifieacutees par leur nom (GPL MPL) leur version et leur langue et comportant le texte inteacutegral de la licence Les versions des logiciels et licences sont de type numeacutero de licence majeur point numeacutero de licence mineur comme 10 ou 22La base de donneacutees permet de geacuterer des cateacutegoriesChaque logiciel est rangeacute dans une cateacutegorie principale et plusieurs cateacutegories secondaires Exemple de cateacutegories bureautique dessin multimeacutedia physique

Exemple (factice) de donneacutees

Applications

Scenari 41 une chaicircne eacuteditoriale XML httpscenariorg deacutepend de Libreoffice 43 et de ImageMagick 68Libreoffice 43 une suite bureautique WYSIWYG httplibreofficeorg

Librairie

ImageMagick 68 permet de creacuteer de convertir de modifier et dafficher des images http imagemagickorg

Composant

impng 02 est un composant de ImageMagick 68 permet de compresser une image au format PNG

Toutes ces applications librairies et composants sont disponibles sous une licence LGPL 30 et GPL 30 franccedilaisesToutes ces applications et librairies sont rangeacutees dans la cateacutegorie principale document Scenari est rangeacute dans la cateacutegorie secondaire Eacutedition WYSIWYM Libreoffice dans la cateacutegorie secondaire Bureautique ImageMagick dans la cateacutegorie secondaire Multimeacutedia

Question

Reacutealiser un MCD en UML[ ]solution ndeg9 [ ] p58

Devoirs

34

1 Exercice Arbre de scegravene 3D[30 minutes]

On souhaite pouvoir geacuterer les diffeacuterents eacuteleacutements composant des scegravenes 3D dans une base de donneacutees Une scegravene contient des objets qui eux-mecircmes peuvent appartenir agrave plusieurs scegravenes (au moins une) mais il ne peut y avoir plusieurs fois le mecircme objet dans une mecircme scegravene Dans chaque scegravene les objets peuvent ecirctre visibles ou invisibles Les scegravenes et les objets sont identifieacutes de maniegravere unique par un nom Une scegravene peut ecirctre active ou inactive Un objet a comme proprieacuteteacute une position dans lespace repreacutesenteacutee par un vecteur de reacuteels agrave trois composantes (x y z) Les objets sont organiseacutes de maniegravere hieacuterarchique un objet peut ecirctre parent de plusieurs objets et chaque objet peut avoir au plus un parent Des scripts peuvent ecirctre associeacutes agrave un objet ou agrave une scegravene (agrave lun ou agrave lautre mais pas aux deux) Un script est identifieacute de maniegravere unique par un nom et possegravede eacutegalement un attribut permettant de connaicirctre son eacutetat (actif ou inactif) Un personnage est un objet particulier qui possegravede des animations Une animation est relative agrave un personnage et est identifieacutee de maniegravere locale par un nom Agrave un objet est associeacute un maillage et celui-ci peut ecirctre utiliseacute par plusieurs objets Un maillage est identifieacute de maniegravere unique par un nom et est composeacute de plusieurs eacuteleacutements Chaque eacuteleacutement est relatif agrave un maillage et est identifieacute de maniegravere locale par un numeacutero Il existe exactement trois types deacuteleacutement des nœuds des arrecirctes et des faces Une face est deacutelimiteacutee par trois arrecirctes et chaque arrecircte est deacutelimiteacutee par deux nœuds Plusieurs arrecirctes peuvent partager un mecircme nœud et plusieurs faces peuvent partager une mecircme arrecircte Afin deacutevaluer la complexiteacute dune scegravene on souhaite pouvoir calculer le nombre de faces afficheacutees pour une scegravene donneacutee (cest-agrave-dire la somme du nombre de faces du maillage associeacute aux objets visibles de la scegravene) Un maillage possegravede plusieurs mateacuteriaux identifieacutes de maniegravere unique par un nom Un mateacuteriau peut ecirctre associeacute agrave plusieurs maillages Un mateacuteriau est caracteacuteriseacute par une couleur deacutefinie par un vecteur dentiers agrave quatre composantes rouge vert bleu alpha Un mateacuteriau peut posseacuteder une texture et celle-ci peut ecirctre utiliseacutee par plusieurs mateacuteriaux Une texture est identifieacutee de maniegravere unique par un nom et possegravede comme attribut une image

Question 1

Question 2

DevoirsIII

Proposez une clarification de ce problegraveme On pourra reclasser les informations par grande cateacutegorie scegravene objets scripts

Eacutetablissez un modegravele conceptuel en UML de ce problegraveme

Compleacutement Exercices de modeacutelisation suppleacutementaire

35

1 Exercice Appartements agrave louer[30 min]

Une agence dimmobilier (ventes et locations) veut geacuterer son parc dappartements dans une base de donneacutees Chaque appartement possegravede plusieurs piegraveces qui peuvent ecirctre des piegraveces dhabitation des piegraveces de rangement ou des commoditeacutes

Chaque piegravece a une superficie un nombre de prises eacutelectriques et des meubles Pour ces derniers on veut enregistrer le nom du modegravele et le type (chaise lit four etc) Rien nempecircche quune piegravece comporte plusieurs meubles identiques (par exemple plusieurs chaises PIN IQUEA) Les piegraveces dhabitation ont une ou plusieurs fenecirctres les piegraveces de rangement ont une ou plusieurs eacutetagegraveres et une surface de rangement utile totale On veut aussi savoir dans quelles piegraveces de rangement se situent les tableaux eacutelectriques de lappartement Finalement les piegraveces commoditeacutes peuvent ecirctre de trois types cuisine toilette ou salle de bain

Lagence veut aussi enregistrer les portes entre les diffeacuterentes piegraveces Une porte peut ecirctre agrave simple battant double battant coulissante ou une simple ouverture

Chaque appartement a une adresse une superficie totale (qui est la somme des superficies des piegraveces) et un type qui est la lettre T suivie du nombre de piegraveces dhabitation de lappartement Pour un appartement donneacute chaque piegravece est identifieacutee par un numeacutero (commenccedilant au numeacutero 1)

Lagence veut eacutegalement enregistrer le quartier ougrave se trouve lappartement auquel est lieacute un prix par megravetre carreacute Finalement elle veut garder un historique de lhistoire de lappartement les peacuteriodes pour lesquelles il est libre occupeacute en travaux ou vendu

Question

2 Exercice Objectifs[40 min]

Vous prenez la preacutesidence de lassociation Objectifs dont lobjet est daider ses eacutetudiants membres agrave mener des projets dans le cadre de leurs eacutetudes

Compleacutement Exercices de modeacutelisation suppleacutementaire

IV

Reacutealisez le diagramme UML reacutepondant aux besoins de cette agence[ ]solution ndeg10 [ ] p59

Exercice Objectifs

36

- - -

-

-

- - -

Vous constatez en arrivant dans lassociation que personne ne sait exactement quels sont les projets en cours ni qui fait quoi dans les projets Vous ne parvenez pas non plus agrave obtenir une liste exacte des partenaires sur lesquels lassociation peut compter La seule chose sur laquelle vous parvenez agrave mettre la main est un fichier tableur vaguement agrave jour

Vous deacutecidez quil est plus que temps de mettre en place une base de donneacutees afin dassurer la bonne gestion des informations les plus importantes pour lassociation Vous vous attachez pour cela agrave reacutealiser une analyse des besoins

Analysez les documents ci-apregraves

Etat des projets

Eacutetat des projets de lassociation Objectifs

Recueil de besoins

Agrave partir de leacutetude du fonctionnement actuel de lassociation vous relevez les choses importantes agrave geacuterer suivantes

Les membres de lassociation geacuteneacuteralement identifieacutes par leur preacutenomLes projets geacutereacutes par lassociation avec des dates de deacutebut et de fin preacutecises et un chef de projetLe deacutetail des tacircches de chaque projet avec leurs dates de deacutebut et de fin aussi et la liste de tous les membres qui y participentLa liste des partenaires des projets avec leur rocircle preacutecis pour chacun des projets auxquels ils participent

Afin de mieux geacuterer les attributions des projets il serait eacutegalement inteacuteressant de creacuteer une liste des speacutecialiteacutes correspondant agrave ce qui ce fait dans lassociation et daffecter une speacutecialiteacute agrave chaque membre ainsi quune agrave chaque projet pour voir si ce sont bien les membres les mieux adapteacutes qui travaille sur les projets

Recueil de donneacutees

Les discussions avec les anciens membres de lassociation vous apprennent les choses suivantes

Lassociation a termineacute de geacuterer les trois projets Comeacutedie Musicale geacutereacutee par Nathalie sur les trois premiers mois du semestre dautomne 1001 Science en fecircte geacutereacutee par Pierre sur tout le semestre de printemps 1003 et Nuit du picolo geacutereacutee par Julien en novembre 1001Les speacutecialiteacutes recenseacutees pour le moment sont Ville Universiteacute Sport Entreprise Culture InternationalIl faut au moins dix membres agrave lassociation (sinon elle ferme) recruter ceux qui manquentAidez lassociation agrave diviser ses projets en tacircches

Exercice Objectifs

37

- Les partenaires suivants aident ou ont aideacute lassociation la mairie pour la comeacutedie musicale et la science en fecircte qui apporte un soutien financier le ministegravere de la culture qui apporte son soutien logistique agrave la science en fecircte lassociation des commerccedilants de la ville qui apporte son soutien publicitaire agrave la comeacutedie musicale 1664 qui offre ses biegraveres agrave moitieacute prix pour la nuit du Picolo

Question 1

Question 2

Question 3

Afin de preacuteparer une analyse des besoins sommaire listez les donneacutees que vous devrez geacuterer agrave laide des documents et recueils de discussion agrave votre disposition Faites des hypothegraveses lorsque les donneacutees sont incomplegravetes ou incoheacuterentes

[ ]solution ndeg11 [ ] p59

Reacutealiser le MCD en UML et en E-A agrave partir des donneacutees preacutepareacutees dans la question preacuteceacutedente[ ]solution ndeg12 [ ] p60

Reacutealiser le MLD en relationnel en traduisant votre MCD[ ]solution ndeg13 [ ] p61

Contenus annexes

38Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

- - -

gt Attributs

Un attribut est une information eacuteleacutementaire qui caracteacuterise une classe et dont la valeur deacutepend de lobjet instancieacute

Le domaine des valeurs que peut prendre lattribut est fixeacute a prioriUn attribut est typeacute

Il peut prendre plusieurs valeurs distinctes dans son domaineUn attribut peut ecirctre multivalueacute Sa valeur alors est une fonction sur dautres attributs de la classeUn attribut peut ecirctre deacuteriveacute

(ou composite) Il joue alors le rocircle dun groupe dattributs (par Un attribut peut ecirctre composeacuteexemple une adresse peut ecirctre un attribut composeacute des attributs numeacutero type de voie nom de la voie) Cette notion renvoie agrave la notion de variable de type dans les langages de Record

programmation classiques

En UML on preacutefegravere lusage de meacutethodes aux attributs deacuteriveacutes On utilisera toujours des meacutethodes degraves que la valeur de lattribut deacuteriveacute deacutepend dautres attributs exteacuterieurs agrave sa classeEn UML on preacutefegravere lusage de compositions aux attributs composeacutes On utilisera toujours des compositions pour les attributs composeacutes et multivalueacutes

1 attributtype2 attribut_multivalueacute[nbMinValeursnbMaxValeurs]type3 attribut_deacuteriveacutetype4 attribut_composeacute5   - sous-attribut1type6   - sous-attribut2type7   -

Contenus annexes

Deacutefinition Attribut

Attention On utilise peu les attributs deacuteriveacutes et composeacutes en UML

Syntaxe

attributtype

attribut_multivalueacute[nbMinValeursnbMaxValeurs]type

attribut_deacuteriveacutetype

attribut_composeacute

  - sous-attribut1type

  - sous-attribut2type

  -

Contenus annexes

39Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Repreacutesentation dattributs en UML

Dans cet exemple les attributs Nom Preacutenom sont de type lun de 20 caractegraveres et lautre de 10 stringtandis que DateNaissance est de type et Age de type Preacutenom est un attribut multivalueacute ici date integerune personne peut avoir de 1 agrave 3 preacutenoms Age est un attribut deacuteriveacute il est calculeacute par une fonction sur DateNaissance

Meacutethodes (cf p39)

Composition (cf p5)

gt Meacutethodes

Une meacutethode (ou opeacuteration) est une fonction associeacutee agrave une classe dobjet qui permet dagir sur les objets de la classe ou qui permet agrave ces objets de renvoyer des valeurs (calculeacutees en fonction de paramegravetres)

1 methode(paramegravetres)type

Pour la modeacutelisation des bases de donneacutees les meacutethodes sont surtout utiliseacutees pour repreacutesenter des donneacutees calculeacutees (agrave linstar des attributs deacuteriveacutees) ou pour mettre en exergue des fonctions importantes du systegraveme cible Seules les meacutethodes les plus importantes sont repreacutesenteacutees lapproche est moins systeacutematique quen modeacutelisation objet par exemple

Lors de la transformation du modegravele conceptuel UML en modegravele logique relationnel les meacutethodes ne Leur repeacuterage au niveau conceptuel sert donc surtout daide-seront geacuteneacuteralement pas impleacutementeacutees

meacutemoire pour limpleacutementation au niveau applicatif

Exemple La classe Personne

Compleacutement Voir aussi

Deacutefinition Meacutethode

Syntaxe

Remarque Meacutethodes et modeacutelisation de BD

Remarque Meacutethodes relationnel relationnel-objet

methode(paramegravetres)type

Contenus annexes

40Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Au contraire un modegravele logique relationnel-objet permettra limpleacutementation de meacutethodes directement associeacutees agrave des tables Leur repeacuterage au niveau conceptuel est donc encore plus important

Transformation des meacutethodes par des vues (cf p40)

gt Transformation des meacutethodes par des vues

Lorsquune meacutethode est speacutecifieacutee sur un diagramme UML pour une classe C si cette meacutethode est une fonction relationnelle (elle renvoie une unique valeur et elle peut ecirctre reacutesolue par une requecircte SQL) alors on creacutee une vue qui reprend les attributs de la classe C et ajoute des colonnes calculeacutees pour les meacutethodes

Les attributs deacuteriveacutes eacutetant apparenteacutes agrave des meacutethodes ils peuvent eacutegalement ecirctre geacutereacutes par des vues

gt Classe dassociation

On utilise la notation des classes dassociation lorsque lon souhaite ajouter des proprieacuteteacutes agrave une association

Notation dune classe dassociation en UML

On reacuteserve en geacuteneacuteral les classes dassociation aux associations NM

Il est toujours possible de reacuteduire une classe dassociation sur une association 1N en migrant ses attributs sur la classe cocircteacute N et cest en geacuteneacuteral plus lisible ainsi

Compleacutement

Meacutethode

Remarque Attributs deacuteriveacutes

Deacutefinition Classe dassociation

Syntaxe Notation dune classe dassociation en UML

Meacutethode

Contenus annexes

41Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

-

Emplois

Selon le standard UML une classe dassociation est une classe et agrave ce titre elle peut ecirctre mobiliseacutee dans dautres associations ou dans des heacuteritages Nous deacuteconseillons neacuteanmoins ces notations qui ont tendance agrave complexifier la lecture et la transformation du diagramme

Nous conseillons donc de ne jamais associer une classe dassociation

gt Transformation des attributs

Pour chaque attribut eacuteleacutementaire et monovalueacute dune classe

on creacutee un attribut correspondant

Attribut

Classe1(ab)

Pour chaque attribut composite comprenant N sous-attributs dune classe

on creacutee N attributs correspondantsdont les noms sont la concateacutenation du nom de lattribut composite avec celui du sous-attribut

Exemple Exemple de classe dassociation

Conseil

Meacutethode Attributs simples

Meacutethode Attributs composites

Contenus annexes

42Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- - - -

Attribut composeacute

Classe1(ab_b1b_b2)

Pour chaque attribut multivalueacute b dune classe C

on creacutee une nouvelle relation RBqui comprend un attribut monovalueacute correspondant agrave bplus la cleacute de la relation repreacutesentant C la cleacute de RB est la concateacutenation des deux attributs

Attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Dans le cas ougrave le nombre maximum de est fini et petit on peut eacutegalement adopter la transformation b

suivante Classe1(ab1b2b3b4b5b6b7b8b9b10)

Si le nombre dattributs est infini ( ) cest impossible sil est trop grand ce nest pas souhaitableb[1]

On combine les regravegles eacutenonceacutees pour les attributs composeacutes et pour les attributs multivalueacutes

Attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Transformation des compositions (cf p42)

Meacutethode Attributs multivalueacutes

Meacutethode Attributs multivalueacutes (meacutethode alternative)

Meacutethode Attributs composeacutes multivalueacutes

Rappel Voir aussi

Contenus annexes

43Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

gt Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Compleacutement Attributs multivalueacutes et composeacutes

Contenus annexes

44Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

Rappel Voir aussi

Rappel

Meacutethode

Contenus annexes

45Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p48)

gt Transformation des associations 1N

Pour chaque association binaire de type 1N

on ajoute agrave la relation cocircteacute N une cleacute eacutetrangegravere vers la relation cocircteacute 1

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Meacutethode

Contenus annexes

46Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Association 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Contrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p46)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

R1

Compleacutement

Rappel

Meacutethode

Contenus annexes

47Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p47)

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Deacutefinition Projection

Contenus annexes

48Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Deacutefinition Projection

Contenus annexes

49Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Transformation des classes dassociation

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de lassociation NM

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Meacutethode Classe dassociation NM

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Exercice Super-heacuteros relationnels I

32

-

-

Question

3 Exercice Super-heacuteros relationnels I[20 min]

La gamme de super-heacuteros GARVEL veut reacutealiser la base de donneacutees de leurs figurines articuleacutees La socieacuteteacute a fait reacutealiser un modegravele UML qui doit servir de point de deacutepart agrave la mise en œuvre

Modegravele UML Figurines GARVEL

Question

4 Exercice Objets Numeacuteriques Libres[30 min]

Lassociation ONL (Objets Numeacuteriques Libres) est une association de promotion des logiciels libres Elle souhaite exposer sur un site Internet une liste de logiciels libres Ce site sera adosseacute agrave une base de donneacutees relationnelle ou relationnel-objet La premiegravere eacutetape de sa deacutemarche est de reacutealiser un modegravele conceptuel repreacutesentant ce quelle souhaite faire

La base de donneacutees permet de geacuterer des applicationsLes applications sont identifieacutees par leur nom (LibreOffice Gimp) et leur version (10 21) et comportent une description courte et une URL Tous les attributs sont obligatoires Chaque application a une URL uniqueLa base de donneacutees permet de geacuterer des librairies

Traduire le scheacutema en modegravele logique relationnel ( )MLD1

On choisira obligatoirement les cleacutes primaires parmi celles neacutecessitant le plus petit nombre de bits possible pour leur codage

[ ]solution ndeg7 [ ] p57

Transformer le modegravele UML en modegravele relationnel (justifier les passages non triviaux en particulier la relation dheacuteritage)

[ ]solution ndeg8 [ ] p58

Exercice Objets Numeacuteriques Libres

33

-

-

-

-

-

-

-

-

-

-

-

-

Les librairies sont des logiciels mais pas des applications Elles ont les mecircmes attributs que les applications (nom version description courte URL) mais les URL ne sont pas neacutecessairement uniques Les applications peuvent deacutependre de librairies ou dautres applications et les librairies peuvent deacutependre dautres librairies (mais pas dune application)La base de donneacutees permet de geacuterer des composantsLes composants sont inteacutegreacutes agrave une application ou librairie Les composants ont un code interne agrave lapplication ou la librairie quil servent une version et une description courte et une URL Le code et le numeacutero de version permettent didentifier localement le composant au sein de la librairie ou de lapplication la description courte et lURL sont optionnellesLa base de donneacutees permet de geacuterer des licencesLes applications librairies et composants sont attacheacutes agrave une ou plusieurs licences identifieacutees par leur nom (GPL MPL) leur version et leur langue et comportant le texte inteacutegral de la licence Les versions des logiciels et licences sont de type numeacutero de licence majeur point numeacutero de licence mineur comme 10 ou 22La base de donneacutees permet de geacuterer des cateacutegoriesChaque logiciel est rangeacute dans une cateacutegorie principale et plusieurs cateacutegories secondaires Exemple de cateacutegories bureautique dessin multimeacutedia physique

Exemple (factice) de donneacutees

Applications

Scenari 41 une chaicircne eacuteditoriale XML httpscenariorg deacutepend de Libreoffice 43 et de ImageMagick 68Libreoffice 43 une suite bureautique WYSIWYG httplibreofficeorg

Librairie

ImageMagick 68 permet de creacuteer de convertir de modifier et dafficher des images http imagemagickorg

Composant

impng 02 est un composant de ImageMagick 68 permet de compresser une image au format PNG

Toutes ces applications librairies et composants sont disponibles sous une licence LGPL 30 et GPL 30 franccedilaisesToutes ces applications et librairies sont rangeacutees dans la cateacutegorie principale document Scenari est rangeacute dans la cateacutegorie secondaire Eacutedition WYSIWYM Libreoffice dans la cateacutegorie secondaire Bureautique ImageMagick dans la cateacutegorie secondaire Multimeacutedia

Question

Reacutealiser un MCD en UML[ ]solution ndeg9 [ ] p58

Devoirs

34

1 Exercice Arbre de scegravene 3D[30 minutes]

On souhaite pouvoir geacuterer les diffeacuterents eacuteleacutements composant des scegravenes 3D dans une base de donneacutees Une scegravene contient des objets qui eux-mecircmes peuvent appartenir agrave plusieurs scegravenes (au moins une) mais il ne peut y avoir plusieurs fois le mecircme objet dans une mecircme scegravene Dans chaque scegravene les objets peuvent ecirctre visibles ou invisibles Les scegravenes et les objets sont identifieacutes de maniegravere unique par un nom Une scegravene peut ecirctre active ou inactive Un objet a comme proprieacuteteacute une position dans lespace repreacutesenteacutee par un vecteur de reacuteels agrave trois composantes (x y z) Les objets sont organiseacutes de maniegravere hieacuterarchique un objet peut ecirctre parent de plusieurs objets et chaque objet peut avoir au plus un parent Des scripts peuvent ecirctre associeacutes agrave un objet ou agrave une scegravene (agrave lun ou agrave lautre mais pas aux deux) Un script est identifieacute de maniegravere unique par un nom et possegravede eacutegalement un attribut permettant de connaicirctre son eacutetat (actif ou inactif) Un personnage est un objet particulier qui possegravede des animations Une animation est relative agrave un personnage et est identifieacutee de maniegravere locale par un nom Agrave un objet est associeacute un maillage et celui-ci peut ecirctre utiliseacute par plusieurs objets Un maillage est identifieacute de maniegravere unique par un nom et est composeacute de plusieurs eacuteleacutements Chaque eacuteleacutement est relatif agrave un maillage et est identifieacute de maniegravere locale par un numeacutero Il existe exactement trois types deacuteleacutement des nœuds des arrecirctes et des faces Une face est deacutelimiteacutee par trois arrecirctes et chaque arrecircte est deacutelimiteacutee par deux nœuds Plusieurs arrecirctes peuvent partager un mecircme nœud et plusieurs faces peuvent partager une mecircme arrecircte Afin deacutevaluer la complexiteacute dune scegravene on souhaite pouvoir calculer le nombre de faces afficheacutees pour une scegravene donneacutee (cest-agrave-dire la somme du nombre de faces du maillage associeacute aux objets visibles de la scegravene) Un maillage possegravede plusieurs mateacuteriaux identifieacutes de maniegravere unique par un nom Un mateacuteriau peut ecirctre associeacute agrave plusieurs maillages Un mateacuteriau est caracteacuteriseacute par une couleur deacutefinie par un vecteur dentiers agrave quatre composantes rouge vert bleu alpha Un mateacuteriau peut posseacuteder une texture et celle-ci peut ecirctre utiliseacutee par plusieurs mateacuteriaux Une texture est identifieacutee de maniegravere unique par un nom et possegravede comme attribut une image

Question 1

Question 2

DevoirsIII

Proposez une clarification de ce problegraveme On pourra reclasser les informations par grande cateacutegorie scegravene objets scripts

Eacutetablissez un modegravele conceptuel en UML de ce problegraveme

Compleacutement Exercices de modeacutelisation suppleacutementaire

35

1 Exercice Appartements agrave louer[30 min]

Une agence dimmobilier (ventes et locations) veut geacuterer son parc dappartements dans une base de donneacutees Chaque appartement possegravede plusieurs piegraveces qui peuvent ecirctre des piegraveces dhabitation des piegraveces de rangement ou des commoditeacutes

Chaque piegravece a une superficie un nombre de prises eacutelectriques et des meubles Pour ces derniers on veut enregistrer le nom du modegravele et le type (chaise lit four etc) Rien nempecircche quune piegravece comporte plusieurs meubles identiques (par exemple plusieurs chaises PIN IQUEA) Les piegraveces dhabitation ont une ou plusieurs fenecirctres les piegraveces de rangement ont une ou plusieurs eacutetagegraveres et une surface de rangement utile totale On veut aussi savoir dans quelles piegraveces de rangement se situent les tableaux eacutelectriques de lappartement Finalement les piegraveces commoditeacutes peuvent ecirctre de trois types cuisine toilette ou salle de bain

Lagence veut aussi enregistrer les portes entre les diffeacuterentes piegraveces Une porte peut ecirctre agrave simple battant double battant coulissante ou une simple ouverture

Chaque appartement a une adresse une superficie totale (qui est la somme des superficies des piegraveces) et un type qui est la lettre T suivie du nombre de piegraveces dhabitation de lappartement Pour un appartement donneacute chaque piegravece est identifieacutee par un numeacutero (commenccedilant au numeacutero 1)

Lagence veut eacutegalement enregistrer le quartier ougrave se trouve lappartement auquel est lieacute un prix par megravetre carreacute Finalement elle veut garder un historique de lhistoire de lappartement les peacuteriodes pour lesquelles il est libre occupeacute en travaux ou vendu

Question

2 Exercice Objectifs[40 min]

Vous prenez la preacutesidence de lassociation Objectifs dont lobjet est daider ses eacutetudiants membres agrave mener des projets dans le cadre de leurs eacutetudes

Compleacutement Exercices de modeacutelisation suppleacutementaire

IV

Reacutealisez le diagramme UML reacutepondant aux besoins de cette agence[ ]solution ndeg10 [ ] p59

Exercice Objectifs

36

- - -

-

-

- - -

Vous constatez en arrivant dans lassociation que personne ne sait exactement quels sont les projets en cours ni qui fait quoi dans les projets Vous ne parvenez pas non plus agrave obtenir une liste exacte des partenaires sur lesquels lassociation peut compter La seule chose sur laquelle vous parvenez agrave mettre la main est un fichier tableur vaguement agrave jour

Vous deacutecidez quil est plus que temps de mettre en place une base de donneacutees afin dassurer la bonne gestion des informations les plus importantes pour lassociation Vous vous attachez pour cela agrave reacutealiser une analyse des besoins

Analysez les documents ci-apregraves

Etat des projets

Eacutetat des projets de lassociation Objectifs

Recueil de besoins

Agrave partir de leacutetude du fonctionnement actuel de lassociation vous relevez les choses importantes agrave geacuterer suivantes

Les membres de lassociation geacuteneacuteralement identifieacutes par leur preacutenomLes projets geacutereacutes par lassociation avec des dates de deacutebut et de fin preacutecises et un chef de projetLe deacutetail des tacircches de chaque projet avec leurs dates de deacutebut et de fin aussi et la liste de tous les membres qui y participentLa liste des partenaires des projets avec leur rocircle preacutecis pour chacun des projets auxquels ils participent

Afin de mieux geacuterer les attributions des projets il serait eacutegalement inteacuteressant de creacuteer une liste des speacutecialiteacutes correspondant agrave ce qui ce fait dans lassociation et daffecter une speacutecialiteacute agrave chaque membre ainsi quune agrave chaque projet pour voir si ce sont bien les membres les mieux adapteacutes qui travaille sur les projets

Recueil de donneacutees

Les discussions avec les anciens membres de lassociation vous apprennent les choses suivantes

Lassociation a termineacute de geacuterer les trois projets Comeacutedie Musicale geacutereacutee par Nathalie sur les trois premiers mois du semestre dautomne 1001 Science en fecircte geacutereacutee par Pierre sur tout le semestre de printemps 1003 et Nuit du picolo geacutereacutee par Julien en novembre 1001Les speacutecialiteacutes recenseacutees pour le moment sont Ville Universiteacute Sport Entreprise Culture InternationalIl faut au moins dix membres agrave lassociation (sinon elle ferme) recruter ceux qui manquentAidez lassociation agrave diviser ses projets en tacircches

Exercice Objectifs

37

- Les partenaires suivants aident ou ont aideacute lassociation la mairie pour la comeacutedie musicale et la science en fecircte qui apporte un soutien financier le ministegravere de la culture qui apporte son soutien logistique agrave la science en fecircte lassociation des commerccedilants de la ville qui apporte son soutien publicitaire agrave la comeacutedie musicale 1664 qui offre ses biegraveres agrave moitieacute prix pour la nuit du Picolo

Question 1

Question 2

Question 3

Afin de preacuteparer une analyse des besoins sommaire listez les donneacutees que vous devrez geacuterer agrave laide des documents et recueils de discussion agrave votre disposition Faites des hypothegraveses lorsque les donneacutees sont incomplegravetes ou incoheacuterentes

[ ]solution ndeg11 [ ] p59

Reacutealiser le MCD en UML et en E-A agrave partir des donneacutees preacutepareacutees dans la question preacuteceacutedente[ ]solution ndeg12 [ ] p60

Reacutealiser le MLD en relationnel en traduisant votre MCD[ ]solution ndeg13 [ ] p61

Contenus annexes

38Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

- - -

gt Attributs

Un attribut est une information eacuteleacutementaire qui caracteacuterise une classe et dont la valeur deacutepend de lobjet instancieacute

Le domaine des valeurs que peut prendre lattribut est fixeacute a prioriUn attribut est typeacute

Il peut prendre plusieurs valeurs distinctes dans son domaineUn attribut peut ecirctre multivalueacute Sa valeur alors est une fonction sur dautres attributs de la classeUn attribut peut ecirctre deacuteriveacute

(ou composite) Il joue alors le rocircle dun groupe dattributs (par Un attribut peut ecirctre composeacuteexemple une adresse peut ecirctre un attribut composeacute des attributs numeacutero type de voie nom de la voie) Cette notion renvoie agrave la notion de variable de type dans les langages de Record

programmation classiques

En UML on preacutefegravere lusage de meacutethodes aux attributs deacuteriveacutes On utilisera toujours des meacutethodes degraves que la valeur de lattribut deacuteriveacute deacutepend dautres attributs exteacuterieurs agrave sa classeEn UML on preacutefegravere lusage de compositions aux attributs composeacutes On utilisera toujours des compositions pour les attributs composeacutes et multivalueacutes

1 attributtype2 attribut_multivalueacute[nbMinValeursnbMaxValeurs]type3 attribut_deacuteriveacutetype4 attribut_composeacute5   - sous-attribut1type6   - sous-attribut2type7   -

Contenus annexes

Deacutefinition Attribut

Attention On utilise peu les attributs deacuteriveacutes et composeacutes en UML

Syntaxe

attributtype

attribut_multivalueacute[nbMinValeursnbMaxValeurs]type

attribut_deacuteriveacutetype

attribut_composeacute

  - sous-attribut1type

  - sous-attribut2type

  -

Contenus annexes

39Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Repreacutesentation dattributs en UML

Dans cet exemple les attributs Nom Preacutenom sont de type lun de 20 caractegraveres et lautre de 10 stringtandis que DateNaissance est de type et Age de type Preacutenom est un attribut multivalueacute ici date integerune personne peut avoir de 1 agrave 3 preacutenoms Age est un attribut deacuteriveacute il est calculeacute par une fonction sur DateNaissance

Meacutethodes (cf p39)

Composition (cf p5)

gt Meacutethodes

Une meacutethode (ou opeacuteration) est une fonction associeacutee agrave une classe dobjet qui permet dagir sur les objets de la classe ou qui permet agrave ces objets de renvoyer des valeurs (calculeacutees en fonction de paramegravetres)

1 methode(paramegravetres)type

Pour la modeacutelisation des bases de donneacutees les meacutethodes sont surtout utiliseacutees pour repreacutesenter des donneacutees calculeacutees (agrave linstar des attributs deacuteriveacutees) ou pour mettre en exergue des fonctions importantes du systegraveme cible Seules les meacutethodes les plus importantes sont repreacutesenteacutees lapproche est moins systeacutematique quen modeacutelisation objet par exemple

Lors de la transformation du modegravele conceptuel UML en modegravele logique relationnel les meacutethodes ne Leur repeacuterage au niveau conceptuel sert donc surtout daide-seront geacuteneacuteralement pas impleacutementeacutees

meacutemoire pour limpleacutementation au niveau applicatif

Exemple La classe Personne

Compleacutement Voir aussi

Deacutefinition Meacutethode

Syntaxe

Remarque Meacutethodes et modeacutelisation de BD

Remarque Meacutethodes relationnel relationnel-objet

methode(paramegravetres)type

Contenus annexes

40Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Au contraire un modegravele logique relationnel-objet permettra limpleacutementation de meacutethodes directement associeacutees agrave des tables Leur repeacuterage au niveau conceptuel est donc encore plus important

Transformation des meacutethodes par des vues (cf p40)

gt Transformation des meacutethodes par des vues

Lorsquune meacutethode est speacutecifieacutee sur un diagramme UML pour une classe C si cette meacutethode est une fonction relationnelle (elle renvoie une unique valeur et elle peut ecirctre reacutesolue par une requecircte SQL) alors on creacutee une vue qui reprend les attributs de la classe C et ajoute des colonnes calculeacutees pour les meacutethodes

Les attributs deacuteriveacutes eacutetant apparenteacutes agrave des meacutethodes ils peuvent eacutegalement ecirctre geacutereacutes par des vues

gt Classe dassociation

On utilise la notation des classes dassociation lorsque lon souhaite ajouter des proprieacuteteacutes agrave une association

Notation dune classe dassociation en UML

On reacuteserve en geacuteneacuteral les classes dassociation aux associations NM

Il est toujours possible de reacuteduire une classe dassociation sur une association 1N en migrant ses attributs sur la classe cocircteacute N et cest en geacuteneacuteral plus lisible ainsi

Compleacutement

Meacutethode

Remarque Attributs deacuteriveacutes

Deacutefinition Classe dassociation

Syntaxe Notation dune classe dassociation en UML

Meacutethode

Contenus annexes

41Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

-

Emplois

Selon le standard UML une classe dassociation est une classe et agrave ce titre elle peut ecirctre mobiliseacutee dans dautres associations ou dans des heacuteritages Nous deacuteconseillons neacuteanmoins ces notations qui ont tendance agrave complexifier la lecture et la transformation du diagramme

Nous conseillons donc de ne jamais associer une classe dassociation

gt Transformation des attributs

Pour chaque attribut eacuteleacutementaire et monovalueacute dune classe

on creacutee un attribut correspondant

Attribut

Classe1(ab)

Pour chaque attribut composite comprenant N sous-attributs dune classe

on creacutee N attributs correspondantsdont les noms sont la concateacutenation du nom de lattribut composite avec celui du sous-attribut

Exemple Exemple de classe dassociation

Conseil

Meacutethode Attributs simples

Meacutethode Attributs composites

Contenus annexes

42Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- - - -

Attribut composeacute

Classe1(ab_b1b_b2)

Pour chaque attribut multivalueacute b dune classe C

on creacutee une nouvelle relation RBqui comprend un attribut monovalueacute correspondant agrave bplus la cleacute de la relation repreacutesentant C la cleacute de RB est la concateacutenation des deux attributs

Attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Dans le cas ougrave le nombre maximum de est fini et petit on peut eacutegalement adopter la transformation b

suivante Classe1(ab1b2b3b4b5b6b7b8b9b10)

Si le nombre dattributs est infini ( ) cest impossible sil est trop grand ce nest pas souhaitableb[1]

On combine les regravegles eacutenonceacutees pour les attributs composeacutes et pour les attributs multivalueacutes

Attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Transformation des compositions (cf p42)

Meacutethode Attributs multivalueacutes

Meacutethode Attributs multivalueacutes (meacutethode alternative)

Meacutethode Attributs composeacutes multivalueacutes

Rappel Voir aussi

Contenus annexes

43Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

gt Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Compleacutement Attributs multivalueacutes et composeacutes

Contenus annexes

44Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

Rappel Voir aussi

Rappel

Meacutethode

Contenus annexes

45Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p48)

gt Transformation des associations 1N

Pour chaque association binaire de type 1N

on ajoute agrave la relation cocircteacute N une cleacute eacutetrangegravere vers la relation cocircteacute 1

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Meacutethode

Contenus annexes

46Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Association 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Contrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p46)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

R1

Compleacutement

Rappel

Meacutethode

Contenus annexes

47Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p47)

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Deacutefinition Projection

Contenus annexes

48Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Deacutefinition Projection

Contenus annexes

49Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Transformation des classes dassociation

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de lassociation NM

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Meacutethode Classe dassociation NM

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Exercice Objets Numeacuteriques Libres

33

-

-

-

-

-

-

-

-

-

-

-

-

Les librairies sont des logiciels mais pas des applications Elles ont les mecircmes attributs que les applications (nom version description courte URL) mais les URL ne sont pas neacutecessairement uniques Les applications peuvent deacutependre de librairies ou dautres applications et les librairies peuvent deacutependre dautres librairies (mais pas dune application)La base de donneacutees permet de geacuterer des composantsLes composants sont inteacutegreacutes agrave une application ou librairie Les composants ont un code interne agrave lapplication ou la librairie quil servent une version et une description courte et une URL Le code et le numeacutero de version permettent didentifier localement le composant au sein de la librairie ou de lapplication la description courte et lURL sont optionnellesLa base de donneacutees permet de geacuterer des licencesLes applications librairies et composants sont attacheacutes agrave une ou plusieurs licences identifieacutees par leur nom (GPL MPL) leur version et leur langue et comportant le texte inteacutegral de la licence Les versions des logiciels et licences sont de type numeacutero de licence majeur point numeacutero de licence mineur comme 10 ou 22La base de donneacutees permet de geacuterer des cateacutegoriesChaque logiciel est rangeacute dans une cateacutegorie principale et plusieurs cateacutegories secondaires Exemple de cateacutegories bureautique dessin multimeacutedia physique

Exemple (factice) de donneacutees

Applications

Scenari 41 une chaicircne eacuteditoriale XML httpscenariorg deacutepend de Libreoffice 43 et de ImageMagick 68Libreoffice 43 une suite bureautique WYSIWYG httplibreofficeorg

Librairie

ImageMagick 68 permet de creacuteer de convertir de modifier et dafficher des images http imagemagickorg

Composant

impng 02 est un composant de ImageMagick 68 permet de compresser une image au format PNG

Toutes ces applications librairies et composants sont disponibles sous une licence LGPL 30 et GPL 30 franccedilaisesToutes ces applications et librairies sont rangeacutees dans la cateacutegorie principale document Scenari est rangeacute dans la cateacutegorie secondaire Eacutedition WYSIWYM Libreoffice dans la cateacutegorie secondaire Bureautique ImageMagick dans la cateacutegorie secondaire Multimeacutedia

Question

Reacutealiser un MCD en UML[ ]solution ndeg9 [ ] p58

Devoirs

34

1 Exercice Arbre de scegravene 3D[30 minutes]

On souhaite pouvoir geacuterer les diffeacuterents eacuteleacutements composant des scegravenes 3D dans une base de donneacutees Une scegravene contient des objets qui eux-mecircmes peuvent appartenir agrave plusieurs scegravenes (au moins une) mais il ne peut y avoir plusieurs fois le mecircme objet dans une mecircme scegravene Dans chaque scegravene les objets peuvent ecirctre visibles ou invisibles Les scegravenes et les objets sont identifieacutes de maniegravere unique par un nom Une scegravene peut ecirctre active ou inactive Un objet a comme proprieacuteteacute une position dans lespace repreacutesenteacutee par un vecteur de reacuteels agrave trois composantes (x y z) Les objets sont organiseacutes de maniegravere hieacuterarchique un objet peut ecirctre parent de plusieurs objets et chaque objet peut avoir au plus un parent Des scripts peuvent ecirctre associeacutes agrave un objet ou agrave une scegravene (agrave lun ou agrave lautre mais pas aux deux) Un script est identifieacute de maniegravere unique par un nom et possegravede eacutegalement un attribut permettant de connaicirctre son eacutetat (actif ou inactif) Un personnage est un objet particulier qui possegravede des animations Une animation est relative agrave un personnage et est identifieacutee de maniegravere locale par un nom Agrave un objet est associeacute un maillage et celui-ci peut ecirctre utiliseacute par plusieurs objets Un maillage est identifieacute de maniegravere unique par un nom et est composeacute de plusieurs eacuteleacutements Chaque eacuteleacutement est relatif agrave un maillage et est identifieacute de maniegravere locale par un numeacutero Il existe exactement trois types deacuteleacutement des nœuds des arrecirctes et des faces Une face est deacutelimiteacutee par trois arrecirctes et chaque arrecircte est deacutelimiteacutee par deux nœuds Plusieurs arrecirctes peuvent partager un mecircme nœud et plusieurs faces peuvent partager une mecircme arrecircte Afin deacutevaluer la complexiteacute dune scegravene on souhaite pouvoir calculer le nombre de faces afficheacutees pour une scegravene donneacutee (cest-agrave-dire la somme du nombre de faces du maillage associeacute aux objets visibles de la scegravene) Un maillage possegravede plusieurs mateacuteriaux identifieacutes de maniegravere unique par un nom Un mateacuteriau peut ecirctre associeacute agrave plusieurs maillages Un mateacuteriau est caracteacuteriseacute par une couleur deacutefinie par un vecteur dentiers agrave quatre composantes rouge vert bleu alpha Un mateacuteriau peut posseacuteder une texture et celle-ci peut ecirctre utiliseacutee par plusieurs mateacuteriaux Une texture est identifieacutee de maniegravere unique par un nom et possegravede comme attribut une image

Question 1

Question 2

DevoirsIII

Proposez une clarification de ce problegraveme On pourra reclasser les informations par grande cateacutegorie scegravene objets scripts

Eacutetablissez un modegravele conceptuel en UML de ce problegraveme

Compleacutement Exercices de modeacutelisation suppleacutementaire

35

1 Exercice Appartements agrave louer[30 min]

Une agence dimmobilier (ventes et locations) veut geacuterer son parc dappartements dans une base de donneacutees Chaque appartement possegravede plusieurs piegraveces qui peuvent ecirctre des piegraveces dhabitation des piegraveces de rangement ou des commoditeacutes

Chaque piegravece a une superficie un nombre de prises eacutelectriques et des meubles Pour ces derniers on veut enregistrer le nom du modegravele et le type (chaise lit four etc) Rien nempecircche quune piegravece comporte plusieurs meubles identiques (par exemple plusieurs chaises PIN IQUEA) Les piegraveces dhabitation ont une ou plusieurs fenecirctres les piegraveces de rangement ont une ou plusieurs eacutetagegraveres et une surface de rangement utile totale On veut aussi savoir dans quelles piegraveces de rangement se situent les tableaux eacutelectriques de lappartement Finalement les piegraveces commoditeacutes peuvent ecirctre de trois types cuisine toilette ou salle de bain

Lagence veut aussi enregistrer les portes entre les diffeacuterentes piegraveces Une porte peut ecirctre agrave simple battant double battant coulissante ou une simple ouverture

Chaque appartement a une adresse une superficie totale (qui est la somme des superficies des piegraveces) et un type qui est la lettre T suivie du nombre de piegraveces dhabitation de lappartement Pour un appartement donneacute chaque piegravece est identifieacutee par un numeacutero (commenccedilant au numeacutero 1)

Lagence veut eacutegalement enregistrer le quartier ougrave se trouve lappartement auquel est lieacute un prix par megravetre carreacute Finalement elle veut garder un historique de lhistoire de lappartement les peacuteriodes pour lesquelles il est libre occupeacute en travaux ou vendu

Question

2 Exercice Objectifs[40 min]

Vous prenez la preacutesidence de lassociation Objectifs dont lobjet est daider ses eacutetudiants membres agrave mener des projets dans le cadre de leurs eacutetudes

Compleacutement Exercices de modeacutelisation suppleacutementaire

IV

Reacutealisez le diagramme UML reacutepondant aux besoins de cette agence[ ]solution ndeg10 [ ] p59

Exercice Objectifs

36

- - -

-

-

- - -

Vous constatez en arrivant dans lassociation que personne ne sait exactement quels sont les projets en cours ni qui fait quoi dans les projets Vous ne parvenez pas non plus agrave obtenir une liste exacte des partenaires sur lesquels lassociation peut compter La seule chose sur laquelle vous parvenez agrave mettre la main est un fichier tableur vaguement agrave jour

Vous deacutecidez quil est plus que temps de mettre en place une base de donneacutees afin dassurer la bonne gestion des informations les plus importantes pour lassociation Vous vous attachez pour cela agrave reacutealiser une analyse des besoins

Analysez les documents ci-apregraves

Etat des projets

Eacutetat des projets de lassociation Objectifs

Recueil de besoins

Agrave partir de leacutetude du fonctionnement actuel de lassociation vous relevez les choses importantes agrave geacuterer suivantes

Les membres de lassociation geacuteneacuteralement identifieacutes par leur preacutenomLes projets geacutereacutes par lassociation avec des dates de deacutebut et de fin preacutecises et un chef de projetLe deacutetail des tacircches de chaque projet avec leurs dates de deacutebut et de fin aussi et la liste de tous les membres qui y participentLa liste des partenaires des projets avec leur rocircle preacutecis pour chacun des projets auxquels ils participent

Afin de mieux geacuterer les attributions des projets il serait eacutegalement inteacuteressant de creacuteer une liste des speacutecialiteacutes correspondant agrave ce qui ce fait dans lassociation et daffecter une speacutecialiteacute agrave chaque membre ainsi quune agrave chaque projet pour voir si ce sont bien les membres les mieux adapteacutes qui travaille sur les projets

Recueil de donneacutees

Les discussions avec les anciens membres de lassociation vous apprennent les choses suivantes

Lassociation a termineacute de geacuterer les trois projets Comeacutedie Musicale geacutereacutee par Nathalie sur les trois premiers mois du semestre dautomne 1001 Science en fecircte geacutereacutee par Pierre sur tout le semestre de printemps 1003 et Nuit du picolo geacutereacutee par Julien en novembre 1001Les speacutecialiteacutes recenseacutees pour le moment sont Ville Universiteacute Sport Entreprise Culture InternationalIl faut au moins dix membres agrave lassociation (sinon elle ferme) recruter ceux qui manquentAidez lassociation agrave diviser ses projets en tacircches

Exercice Objectifs

37

- Les partenaires suivants aident ou ont aideacute lassociation la mairie pour la comeacutedie musicale et la science en fecircte qui apporte un soutien financier le ministegravere de la culture qui apporte son soutien logistique agrave la science en fecircte lassociation des commerccedilants de la ville qui apporte son soutien publicitaire agrave la comeacutedie musicale 1664 qui offre ses biegraveres agrave moitieacute prix pour la nuit du Picolo

Question 1

Question 2

Question 3

Afin de preacuteparer une analyse des besoins sommaire listez les donneacutees que vous devrez geacuterer agrave laide des documents et recueils de discussion agrave votre disposition Faites des hypothegraveses lorsque les donneacutees sont incomplegravetes ou incoheacuterentes

[ ]solution ndeg11 [ ] p59

Reacutealiser le MCD en UML et en E-A agrave partir des donneacutees preacutepareacutees dans la question preacuteceacutedente[ ]solution ndeg12 [ ] p60

Reacutealiser le MLD en relationnel en traduisant votre MCD[ ]solution ndeg13 [ ] p61

Contenus annexes

38Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

- - -

gt Attributs

Un attribut est une information eacuteleacutementaire qui caracteacuterise une classe et dont la valeur deacutepend de lobjet instancieacute

Le domaine des valeurs que peut prendre lattribut est fixeacute a prioriUn attribut est typeacute

Il peut prendre plusieurs valeurs distinctes dans son domaineUn attribut peut ecirctre multivalueacute Sa valeur alors est une fonction sur dautres attributs de la classeUn attribut peut ecirctre deacuteriveacute

(ou composite) Il joue alors le rocircle dun groupe dattributs (par Un attribut peut ecirctre composeacuteexemple une adresse peut ecirctre un attribut composeacute des attributs numeacutero type de voie nom de la voie) Cette notion renvoie agrave la notion de variable de type dans les langages de Record

programmation classiques

En UML on preacutefegravere lusage de meacutethodes aux attributs deacuteriveacutes On utilisera toujours des meacutethodes degraves que la valeur de lattribut deacuteriveacute deacutepend dautres attributs exteacuterieurs agrave sa classeEn UML on preacutefegravere lusage de compositions aux attributs composeacutes On utilisera toujours des compositions pour les attributs composeacutes et multivalueacutes

1 attributtype2 attribut_multivalueacute[nbMinValeursnbMaxValeurs]type3 attribut_deacuteriveacutetype4 attribut_composeacute5   - sous-attribut1type6   - sous-attribut2type7   -

Contenus annexes

Deacutefinition Attribut

Attention On utilise peu les attributs deacuteriveacutes et composeacutes en UML

Syntaxe

attributtype

attribut_multivalueacute[nbMinValeursnbMaxValeurs]type

attribut_deacuteriveacutetype

attribut_composeacute

  - sous-attribut1type

  - sous-attribut2type

  -

Contenus annexes

39Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Repreacutesentation dattributs en UML

Dans cet exemple les attributs Nom Preacutenom sont de type lun de 20 caractegraveres et lautre de 10 stringtandis que DateNaissance est de type et Age de type Preacutenom est un attribut multivalueacute ici date integerune personne peut avoir de 1 agrave 3 preacutenoms Age est un attribut deacuteriveacute il est calculeacute par une fonction sur DateNaissance

Meacutethodes (cf p39)

Composition (cf p5)

gt Meacutethodes

Une meacutethode (ou opeacuteration) est une fonction associeacutee agrave une classe dobjet qui permet dagir sur les objets de la classe ou qui permet agrave ces objets de renvoyer des valeurs (calculeacutees en fonction de paramegravetres)

1 methode(paramegravetres)type

Pour la modeacutelisation des bases de donneacutees les meacutethodes sont surtout utiliseacutees pour repreacutesenter des donneacutees calculeacutees (agrave linstar des attributs deacuteriveacutees) ou pour mettre en exergue des fonctions importantes du systegraveme cible Seules les meacutethodes les plus importantes sont repreacutesenteacutees lapproche est moins systeacutematique quen modeacutelisation objet par exemple

Lors de la transformation du modegravele conceptuel UML en modegravele logique relationnel les meacutethodes ne Leur repeacuterage au niveau conceptuel sert donc surtout daide-seront geacuteneacuteralement pas impleacutementeacutees

meacutemoire pour limpleacutementation au niveau applicatif

Exemple La classe Personne

Compleacutement Voir aussi

Deacutefinition Meacutethode

Syntaxe

Remarque Meacutethodes et modeacutelisation de BD

Remarque Meacutethodes relationnel relationnel-objet

methode(paramegravetres)type

Contenus annexes

40Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Au contraire un modegravele logique relationnel-objet permettra limpleacutementation de meacutethodes directement associeacutees agrave des tables Leur repeacuterage au niveau conceptuel est donc encore plus important

Transformation des meacutethodes par des vues (cf p40)

gt Transformation des meacutethodes par des vues

Lorsquune meacutethode est speacutecifieacutee sur un diagramme UML pour une classe C si cette meacutethode est une fonction relationnelle (elle renvoie une unique valeur et elle peut ecirctre reacutesolue par une requecircte SQL) alors on creacutee une vue qui reprend les attributs de la classe C et ajoute des colonnes calculeacutees pour les meacutethodes

Les attributs deacuteriveacutes eacutetant apparenteacutes agrave des meacutethodes ils peuvent eacutegalement ecirctre geacutereacutes par des vues

gt Classe dassociation

On utilise la notation des classes dassociation lorsque lon souhaite ajouter des proprieacuteteacutes agrave une association

Notation dune classe dassociation en UML

On reacuteserve en geacuteneacuteral les classes dassociation aux associations NM

Il est toujours possible de reacuteduire une classe dassociation sur une association 1N en migrant ses attributs sur la classe cocircteacute N et cest en geacuteneacuteral plus lisible ainsi

Compleacutement

Meacutethode

Remarque Attributs deacuteriveacutes

Deacutefinition Classe dassociation

Syntaxe Notation dune classe dassociation en UML

Meacutethode

Contenus annexes

41Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

-

Emplois

Selon le standard UML une classe dassociation est une classe et agrave ce titre elle peut ecirctre mobiliseacutee dans dautres associations ou dans des heacuteritages Nous deacuteconseillons neacuteanmoins ces notations qui ont tendance agrave complexifier la lecture et la transformation du diagramme

Nous conseillons donc de ne jamais associer une classe dassociation

gt Transformation des attributs

Pour chaque attribut eacuteleacutementaire et monovalueacute dune classe

on creacutee un attribut correspondant

Attribut

Classe1(ab)

Pour chaque attribut composite comprenant N sous-attributs dune classe

on creacutee N attributs correspondantsdont les noms sont la concateacutenation du nom de lattribut composite avec celui du sous-attribut

Exemple Exemple de classe dassociation

Conseil

Meacutethode Attributs simples

Meacutethode Attributs composites

Contenus annexes

42Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- - - -

Attribut composeacute

Classe1(ab_b1b_b2)

Pour chaque attribut multivalueacute b dune classe C

on creacutee une nouvelle relation RBqui comprend un attribut monovalueacute correspondant agrave bplus la cleacute de la relation repreacutesentant C la cleacute de RB est la concateacutenation des deux attributs

Attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Dans le cas ougrave le nombre maximum de est fini et petit on peut eacutegalement adopter la transformation b

suivante Classe1(ab1b2b3b4b5b6b7b8b9b10)

Si le nombre dattributs est infini ( ) cest impossible sil est trop grand ce nest pas souhaitableb[1]

On combine les regravegles eacutenonceacutees pour les attributs composeacutes et pour les attributs multivalueacutes

Attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Transformation des compositions (cf p42)

Meacutethode Attributs multivalueacutes

Meacutethode Attributs multivalueacutes (meacutethode alternative)

Meacutethode Attributs composeacutes multivalueacutes

Rappel Voir aussi

Contenus annexes

43Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

gt Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Compleacutement Attributs multivalueacutes et composeacutes

Contenus annexes

44Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

Rappel Voir aussi

Rappel

Meacutethode

Contenus annexes

45Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p48)

gt Transformation des associations 1N

Pour chaque association binaire de type 1N

on ajoute agrave la relation cocircteacute N une cleacute eacutetrangegravere vers la relation cocircteacute 1

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Meacutethode

Contenus annexes

46Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Association 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Contrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p46)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

R1

Compleacutement

Rappel

Meacutethode

Contenus annexes

47Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p47)

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Deacutefinition Projection

Contenus annexes

48Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Deacutefinition Projection

Contenus annexes

49Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Transformation des classes dassociation

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de lassociation NM

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Meacutethode Classe dassociation NM

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Devoirs

34

1 Exercice Arbre de scegravene 3D[30 minutes]

On souhaite pouvoir geacuterer les diffeacuterents eacuteleacutements composant des scegravenes 3D dans une base de donneacutees Une scegravene contient des objets qui eux-mecircmes peuvent appartenir agrave plusieurs scegravenes (au moins une) mais il ne peut y avoir plusieurs fois le mecircme objet dans une mecircme scegravene Dans chaque scegravene les objets peuvent ecirctre visibles ou invisibles Les scegravenes et les objets sont identifieacutes de maniegravere unique par un nom Une scegravene peut ecirctre active ou inactive Un objet a comme proprieacuteteacute une position dans lespace repreacutesenteacutee par un vecteur de reacuteels agrave trois composantes (x y z) Les objets sont organiseacutes de maniegravere hieacuterarchique un objet peut ecirctre parent de plusieurs objets et chaque objet peut avoir au plus un parent Des scripts peuvent ecirctre associeacutes agrave un objet ou agrave une scegravene (agrave lun ou agrave lautre mais pas aux deux) Un script est identifieacute de maniegravere unique par un nom et possegravede eacutegalement un attribut permettant de connaicirctre son eacutetat (actif ou inactif) Un personnage est un objet particulier qui possegravede des animations Une animation est relative agrave un personnage et est identifieacutee de maniegravere locale par un nom Agrave un objet est associeacute un maillage et celui-ci peut ecirctre utiliseacute par plusieurs objets Un maillage est identifieacute de maniegravere unique par un nom et est composeacute de plusieurs eacuteleacutements Chaque eacuteleacutement est relatif agrave un maillage et est identifieacute de maniegravere locale par un numeacutero Il existe exactement trois types deacuteleacutement des nœuds des arrecirctes et des faces Une face est deacutelimiteacutee par trois arrecirctes et chaque arrecircte est deacutelimiteacutee par deux nœuds Plusieurs arrecirctes peuvent partager un mecircme nœud et plusieurs faces peuvent partager une mecircme arrecircte Afin deacutevaluer la complexiteacute dune scegravene on souhaite pouvoir calculer le nombre de faces afficheacutees pour une scegravene donneacutee (cest-agrave-dire la somme du nombre de faces du maillage associeacute aux objets visibles de la scegravene) Un maillage possegravede plusieurs mateacuteriaux identifieacutes de maniegravere unique par un nom Un mateacuteriau peut ecirctre associeacute agrave plusieurs maillages Un mateacuteriau est caracteacuteriseacute par une couleur deacutefinie par un vecteur dentiers agrave quatre composantes rouge vert bleu alpha Un mateacuteriau peut posseacuteder une texture et celle-ci peut ecirctre utiliseacutee par plusieurs mateacuteriaux Une texture est identifieacutee de maniegravere unique par un nom et possegravede comme attribut une image

Question 1

Question 2

DevoirsIII

Proposez une clarification de ce problegraveme On pourra reclasser les informations par grande cateacutegorie scegravene objets scripts

Eacutetablissez un modegravele conceptuel en UML de ce problegraveme

Compleacutement Exercices de modeacutelisation suppleacutementaire

35

1 Exercice Appartements agrave louer[30 min]

Une agence dimmobilier (ventes et locations) veut geacuterer son parc dappartements dans une base de donneacutees Chaque appartement possegravede plusieurs piegraveces qui peuvent ecirctre des piegraveces dhabitation des piegraveces de rangement ou des commoditeacutes

Chaque piegravece a une superficie un nombre de prises eacutelectriques et des meubles Pour ces derniers on veut enregistrer le nom du modegravele et le type (chaise lit four etc) Rien nempecircche quune piegravece comporte plusieurs meubles identiques (par exemple plusieurs chaises PIN IQUEA) Les piegraveces dhabitation ont une ou plusieurs fenecirctres les piegraveces de rangement ont une ou plusieurs eacutetagegraveres et une surface de rangement utile totale On veut aussi savoir dans quelles piegraveces de rangement se situent les tableaux eacutelectriques de lappartement Finalement les piegraveces commoditeacutes peuvent ecirctre de trois types cuisine toilette ou salle de bain

Lagence veut aussi enregistrer les portes entre les diffeacuterentes piegraveces Une porte peut ecirctre agrave simple battant double battant coulissante ou une simple ouverture

Chaque appartement a une adresse une superficie totale (qui est la somme des superficies des piegraveces) et un type qui est la lettre T suivie du nombre de piegraveces dhabitation de lappartement Pour un appartement donneacute chaque piegravece est identifieacutee par un numeacutero (commenccedilant au numeacutero 1)

Lagence veut eacutegalement enregistrer le quartier ougrave se trouve lappartement auquel est lieacute un prix par megravetre carreacute Finalement elle veut garder un historique de lhistoire de lappartement les peacuteriodes pour lesquelles il est libre occupeacute en travaux ou vendu

Question

2 Exercice Objectifs[40 min]

Vous prenez la preacutesidence de lassociation Objectifs dont lobjet est daider ses eacutetudiants membres agrave mener des projets dans le cadre de leurs eacutetudes

Compleacutement Exercices de modeacutelisation suppleacutementaire

IV

Reacutealisez le diagramme UML reacutepondant aux besoins de cette agence[ ]solution ndeg10 [ ] p59

Exercice Objectifs

36

- - -

-

-

- - -

Vous constatez en arrivant dans lassociation que personne ne sait exactement quels sont les projets en cours ni qui fait quoi dans les projets Vous ne parvenez pas non plus agrave obtenir une liste exacte des partenaires sur lesquels lassociation peut compter La seule chose sur laquelle vous parvenez agrave mettre la main est un fichier tableur vaguement agrave jour

Vous deacutecidez quil est plus que temps de mettre en place une base de donneacutees afin dassurer la bonne gestion des informations les plus importantes pour lassociation Vous vous attachez pour cela agrave reacutealiser une analyse des besoins

Analysez les documents ci-apregraves

Etat des projets

Eacutetat des projets de lassociation Objectifs

Recueil de besoins

Agrave partir de leacutetude du fonctionnement actuel de lassociation vous relevez les choses importantes agrave geacuterer suivantes

Les membres de lassociation geacuteneacuteralement identifieacutes par leur preacutenomLes projets geacutereacutes par lassociation avec des dates de deacutebut et de fin preacutecises et un chef de projetLe deacutetail des tacircches de chaque projet avec leurs dates de deacutebut et de fin aussi et la liste de tous les membres qui y participentLa liste des partenaires des projets avec leur rocircle preacutecis pour chacun des projets auxquels ils participent

Afin de mieux geacuterer les attributions des projets il serait eacutegalement inteacuteressant de creacuteer une liste des speacutecialiteacutes correspondant agrave ce qui ce fait dans lassociation et daffecter une speacutecialiteacute agrave chaque membre ainsi quune agrave chaque projet pour voir si ce sont bien les membres les mieux adapteacutes qui travaille sur les projets

Recueil de donneacutees

Les discussions avec les anciens membres de lassociation vous apprennent les choses suivantes

Lassociation a termineacute de geacuterer les trois projets Comeacutedie Musicale geacutereacutee par Nathalie sur les trois premiers mois du semestre dautomne 1001 Science en fecircte geacutereacutee par Pierre sur tout le semestre de printemps 1003 et Nuit du picolo geacutereacutee par Julien en novembre 1001Les speacutecialiteacutes recenseacutees pour le moment sont Ville Universiteacute Sport Entreprise Culture InternationalIl faut au moins dix membres agrave lassociation (sinon elle ferme) recruter ceux qui manquentAidez lassociation agrave diviser ses projets en tacircches

Exercice Objectifs

37

- Les partenaires suivants aident ou ont aideacute lassociation la mairie pour la comeacutedie musicale et la science en fecircte qui apporte un soutien financier le ministegravere de la culture qui apporte son soutien logistique agrave la science en fecircte lassociation des commerccedilants de la ville qui apporte son soutien publicitaire agrave la comeacutedie musicale 1664 qui offre ses biegraveres agrave moitieacute prix pour la nuit du Picolo

Question 1

Question 2

Question 3

Afin de preacuteparer une analyse des besoins sommaire listez les donneacutees que vous devrez geacuterer agrave laide des documents et recueils de discussion agrave votre disposition Faites des hypothegraveses lorsque les donneacutees sont incomplegravetes ou incoheacuterentes

[ ]solution ndeg11 [ ] p59

Reacutealiser le MCD en UML et en E-A agrave partir des donneacutees preacutepareacutees dans la question preacuteceacutedente[ ]solution ndeg12 [ ] p60

Reacutealiser le MLD en relationnel en traduisant votre MCD[ ]solution ndeg13 [ ] p61

Contenus annexes

38Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

- - -

gt Attributs

Un attribut est une information eacuteleacutementaire qui caracteacuterise une classe et dont la valeur deacutepend de lobjet instancieacute

Le domaine des valeurs que peut prendre lattribut est fixeacute a prioriUn attribut est typeacute

Il peut prendre plusieurs valeurs distinctes dans son domaineUn attribut peut ecirctre multivalueacute Sa valeur alors est une fonction sur dautres attributs de la classeUn attribut peut ecirctre deacuteriveacute

(ou composite) Il joue alors le rocircle dun groupe dattributs (par Un attribut peut ecirctre composeacuteexemple une adresse peut ecirctre un attribut composeacute des attributs numeacutero type de voie nom de la voie) Cette notion renvoie agrave la notion de variable de type dans les langages de Record

programmation classiques

En UML on preacutefegravere lusage de meacutethodes aux attributs deacuteriveacutes On utilisera toujours des meacutethodes degraves que la valeur de lattribut deacuteriveacute deacutepend dautres attributs exteacuterieurs agrave sa classeEn UML on preacutefegravere lusage de compositions aux attributs composeacutes On utilisera toujours des compositions pour les attributs composeacutes et multivalueacutes

1 attributtype2 attribut_multivalueacute[nbMinValeursnbMaxValeurs]type3 attribut_deacuteriveacutetype4 attribut_composeacute5   - sous-attribut1type6   - sous-attribut2type7   -

Contenus annexes

Deacutefinition Attribut

Attention On utilise peu les attributs deacuteriveacutes et composeacutes en UML

Syntaxe

attributtype

attribut_multivalueacute[nbMinValeursnbMaxValeurs]type

attribut_deacuteriveacutetype

attribut_composeacute

  - sous-attribut1type

  - sous-attribut2type

  -

Contenus annexes

39Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Repreacutesentation dattributs en UML

Dans cet exemple les attributs Nom Preacutenom sont de type lun de 20 caractegraveres et lautre de 10 stringtandis que DateNaissance est de type et Age de type Preacutenom est un attribut multivalueacute ici date integerune personne peut avoir de 1 agrave 3 preacutenoms Age est un attribut deacuteriveacute il est calculeacute par une fonction sur DateNaissance

Meacutethodes (cf p39)

Composition (cf p5)

gt Meacutethodes

Une meacutethode (ou opeacuteration) est une fonction associeacutee agrave une classe dobjet qui permet dagir sur les objets de la classe ou qui permet agrave ces objets de renvoyer des valeurs (calculeacutees en fonction de paramegravetres)

1 methode(paramegravetres)type

Pour la modeacutelisation des bases de donneacutees les meacutethodes sont surtout utiliseacutees pour repreacutesenter des donneacutees calculeacutees (agrave linstar des attributs deacuteriveacutees) ou pour mettre en exergue des fonctions importantes du systegraveme cible Seules les meacutethodes les plus importantes sont repreacutesenteacutees lapproche est moins systeacutematique quen modeacutelisation objet par exemple

Lors de la transformation du modegravele conceptuel UML en modegravele logique relationnel les meacutethodes ne Leur repeacuterage au niveau conceptuel sert donc surtout daide-seront geacuteneacuteralement pas impleacutementeacutees

meacutemoire pour limpleacutementation au niveau applicatif

Exemple La classe Personne

Compleacutement Voir aussi

Deacutefinition Meacutethode

Syntaxe

Remarque Meacutethodes et modeacutelisation de BD

Remarque Meacutethodes relationnel relationnel-objet

methode(paramegravetres)type

Contenus annexes

40Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Au contraire un modegravele logique relationnel-objet permettra limpleacutementation de meacutethodes directement associeacutees agrave des tables Leur repeacuterage au niveau conceptuel est donc encore plus important

Transformation des meacutethodes par des vues (cf p40)

gt Transformation des meacutethodes par des vues

Lorsquune meacutethode est speacutecifieacutee sur un diagramme UML pour une classe C si cette meacutethode est une fonction relationnelle (elle renvoie une unique valeur et elle peut ecirctre reacutesolue par une requecircte SQL) alors on creacutee une vue qui reprend les attributs de la classe C et ajoute des colonnes calculeacutees pour les meacutethodes

Les attributs deacuteriveacutes eacutetant apparenteacutes agrave des meacutethodes ils peuvent eacutegalement ecirctre geacutereacutes par des vues

gt Classe dassociation

On utilise la notation des classes dassociation lorsque lon souhaite ajouter des proprieacuteteacutes agrave une association

Notation dune classe dassociation en UML

On reacuteserve en geacuteneacuteral les classes dassociation aux associations NM

Il est toujours possible de reacuteduire une classe dassociation sur une association 1N en migrant ses attributs sur la classe cocircteacute N et cest en geacuteneacuteral plus lisible ainsi

Compleacutement

Meacutethode

Remarque Attributs deacuteriveacutes

Deacutefinition Classe dassociation

Syntaxe Notation dune classe dassociation en UML

Meacutethode

Contenus annexes

41Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

-

Emplois

Selon le standard UML une classe dassociation est une classe et agrave ce titre elle peut ecirctre mobiliseacutee dans dautres associations ou dans des heacuteritages Nous deacuteconseillons neacuteanmoins ces notations qui ont tendance agrave complexifier la lecture et la transformation du diagramme

Nous conseillons donc de ne jamais associer une classe dassociation

gt Transformation des attributs

Pour chaque attribut eacuteleacutementaire et monovalueacute dune classe

on creacutee un attribut correspondant

Attribut

Classe1(ab)

Pour chaque attribut composite comprenant N sous-attributs dune classe

on creacutee N attributs correspondantsdont les noms sont la concateacutenation du nom de lattribut composite avec celui du sous-attribut

Exemple Exemple de classe dassociation

Conseil

Meacutethode Attributs simples

Meacutethode Attributs composites

Contenus annexes

42Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- - - -

Attribut composeacute

Classe1(ab_b1b_b2)

Pour chaque attribut multivalueacute b dune classe C

on creacutee une nouvelle relation RBqui comprend un attribut monovalueacute correspondant agrave bplus la cleacute de la relation repreacutesentant C la cleacute de RB est la concateacutenation des deux attributs

Attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Dans le cas ougrave le nombre maximum de est fini et petit on peut eacutegalement adopter la transformation b

suivante Classe1(ab1b2b3b4b5b6b7b8b9b10)

Si le nombre dattributs est infini ( ) cest impossible sil est trop grand ce nest pas souhaitableb[1]

On combine les regravegles eacutenonceacutees pour les attributs composeacutes et pour les attributs multivalueacutes

Attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Transformation des compositions (cf p42)

Meacutethode Attributs multivalueacutes

Meacutethode Attributs multivalueacutes (meacutethode alternative)

Meacutethode Attributs composeacutes multivalueacutes

Rappel Voir aussi

Contenus annexes

43Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

gt Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Compleacutement Attributs multivalueacutes et composeacutes

Contenus annexes

44Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

Rappel Voir aussi

Rappel

Meacutethode

Contenus annexes

45Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p48)

gt Transformation des associations 1N

Pour chaque association binaire de type 1N

on ajoute agrave la relation cocircteacute N une cleacute eacutetrangegravere vers la relation cocircteacute 1

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Meacutethode

Contenus annexes

46Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Association 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Contrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p46)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

R1

Compleacutement

Rappel

Meacutethode

Contenus annexes

47Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p47)

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Deacutefinition Projection

Contenus annexes

48Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Deacutefinition Projection

Contenus annexes

49Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Transformation des classes dassociation

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de lassociation NM

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Meacutethode Classe dassociation NM

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Compleacutement Exercices de modeacutelisation suppleacutementaire

35

1 Exercice Appartements agrave louer[30 min]

Une agence dimmobilier (ventes et locations) veut geacuterer son parc dappartements dans une base de donneacutees Chaque appartement possegravede plusieurs piegraveces qui peuvent ecirctre des piegraveces dhabitation des piegraveces de rangement ou des commoditeacutes

Chaque piegravece a une superficie un nombre de prises eacutelectriques et des meubles Pour ces derniers on veut enregistrer le nom du modegravele et le type (chaise lit four etc) Rien nempecircche quune piegravece comporte plusieurs meubles identiques (par exemple plusieurs chaises PIN IQUEA) Les piegraveces dhabitation ont une ou plusieurs fenecirctres les piegraveces de rangement ont une ou plusieurs eacutetagegraveres et une surface de rangement utile totale On veut aussi savoir dans quelles piegraveces de rangement se situent les tableaux eacutelectriques de lappartement Finalement les piegraveces commoditeacutes peuvent ecirctre de trois types cuisine toilette ou salle de bain

Lagence veut aussi enregistrer les portes entre les diffeacuterentes piegraveces Une porte peut ecirctre agrave simple battant double battant coulissante ou une simple ouverture

Chaque appartement a une adresse une superficie totale (qui est la somme des superficies des piegraveces) et un type qui est la lettre T suivie du nombre de piegraveces dhabitation de lappartement Pour un appartement donneacute chaque piegravece est identifieacutee par un numeacutero (commenccedilant au numeacutero 1)

Lagence veut eacutegalement enregistrer le quartier ougrave se trouve lappartement auquel est lieacute un prix par megravetre carreacute Finalement elle veut garder un historique de lhistoire de lappartement les peacuteriodes pour lesquelles il est libre occupeacute en travaux ou vendu

Question

2 Exercice Objectifs[40 min]

Vous prenez la preacutesidence de lassociation Objectifs dont lobjet est daider ses eacutetudiants membres agrave mener des projets dans le cadre de leurs eacutetudes

Compleacutement Exercices de modeacutelisation suppleacutementaire

IV

Reacutealisez le diagramme UML reacutepondant aux besoins de cette agence[ ]solution ndeg10 [ ] p59

Exercice Objectifs

36

- - -

-

-

- - -

Vous constatez en arrivant dans lassociation que personne ne sait exactement quels sont les projets en cours ni qui fait quoi dans les projets Vous ne parvenez pas non plus agrave obtenir une liste exacte des partenaires sur lesquels lassociation peut compter La seule chose sur laquelle vous parvenez agrave mettre la main est un fichier tableur vaguement agrave jour

Vous deacutecidez quil est plus que temps de mettre en place une base de donneacutees afin dassurer la bonne gestion des informations les plus importantes pour lassociation Vous vous attachez pour cela agrave reacutealiser une analyse des besoins

Analysez les documents ci-apregraves

Etat des projets

Eacutetat des projets de lassociation Objectifs

Recueil de besoins

Agrave partir de leacutetude du fonctionnement actuel de lassociation vous relevez les choses importantes agrave geacuterer suivantes

Les membres de lassociation geacuteneacuteralement identifieacutes par leur preacutenomLes projets geacutereacutes par lassociation avec des dates de deacutebut et de fin preacutecises et un chef de projetLe deacutetail des tacircches de chaque projet avec leurs dates de deacutebut et de fin aussi et la liste de tous les membres qui y participentLa liste des partenaires des projets avec leur rocircle preacutecis pour chacun des projets auxquels ils participent

Afin de mieux geacuterer les attributions des projets il serait eacutegalement inteacuteressant de creacuteer une liste des speacutecialiteacutes correspondant agrave ce qui ce fait dans lassociation et daffecter une speacutecialiteacute agrave chaque membre ainsi quune agrave chaque projet pour voir si ce sont bien les membres les mieux adapteacutes qui travaille sur les projets

Recueil de donneacutees

Les discussions avec les anciens membres de lassociation vous apprennent les choses suivantes

Lassociation a termineacute de geacuterer les trois projets Comeacutedie Musicale geacutereacutee par Nathalie sur les trois premiers mois du semestre dautomne 1001 Science en fecircte geacutereacutee par Pierre sur tout le semestre de printemps 1003 et Nuit du picolo geacutereacutee par Julien en novembre 1001Les speacutecialiteacutes recenseacutees pour le moment sont Ville Universiteacute Sport Entreprise Culture InternationalIl faut au moins dix membres agrave lassociation (sinon elle ferme) recruter ceux qui manquentAidez lassociation agrave diviser ses projets en tacircches

Exercice Objectifs

37

- Les partenaires suivants aident ou ont aideacute lassociation la mairie pour la comeacutedie musicale et la science en fecircte qui apporte un soutien financier le ministegravere de la culture qui apporte son soutien logistique agrave la science en fecircte lassociation des commerccedilants de la ville qui apporte son soutien publicitaire agrave la comeacutedie musicale 1664 qui offre ses biegraveres agrave moitieacute prix pour la nuit du Picolo

Question 1

Question 2

Question 3

Afin de preacuteparer une analyse des besoins sommaire listez les donneacutees que vous devrez geacuterer agrave laide des documents et recueils de discussion agrave votre disposition Faites des hypothegraveses lorsque les donneacutees sont incomplegravetes ou incoheacuterentes

[ ]solution ndeg11 [ ] p59

Reacutealiser le MCD en UML et en E-A agrave partir des donneacutees preacutepareacutees dans la question preacuteceacutedente[ ]solution ndeg12 [ ] p60

Reacutealiser le MLD en relationnel en traduisant votre MCD[ ]solution ndeg13 [ ] p61

Contenus annexes

38Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

- - -

gt Attributs

Un attribut est une information eacuteleacutementaire qui caracteacuterise une classe et dont la valeur deacutepend de lobjet instancieacute

Le domaine des valeurs que peut prendre lattribut est fixeacute a prioriUn attribut est typeacute

Il peut prendre plusieurs valeurs distinctes dans son domaineUn attribut peut ecirctre multivalueacute Sa valeur alors est une fonction sur dautres attributs de la classeUn attribut peut ecirctre deacuteriveacute

(ou composite) Il joue alors le rocircle dun groupe dattributs (par Un attribut peut ecirctre composeacuteexemple une adresse peut ecirctre un attribut composeacute des attributs numeacutero type de voie nom de la voie) Cette notion renvoie agrave la notion de variable de type dans les langages de Record

programmation classiques

En UML on preacutefegravere lusage de meacutethodes aux attributs deacuteriveacutes On utilisera toujours des meacutethodes degraves que la valeur de lattribut deacuteriveacute deacutepend dautres attributs exteacuterieurs agrave sa classeEn UML on preacutefegravere lusage de compositions aux attributs composeacutes On utilisera toujours des compositions pour les attributs composeacutes et multivalueacutes

1 attributtype2 attribut_multivalueacute[nbMinValeursnbMaxValeurs]type3 attribut_deacuteriveacutetype4 attribut_composeacute5   - sous-attribut1type6   - sous-attribut2type7   -

Contenus annexes

Deacutefinition Attribut

Attention On utilise peu les attributs deacuteriveacutes et composeacutes en UML

Syntaxe

attributtype

attribut_multivalueacute[nbMinValeursnbMaxValeurs]type

attribut_deacuteriveacutetype

attribut_composeacute

  - sous-attribut1type

  - sous-attribut2type

  -

Contenus annexes

39Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Repreacutesentation dattributs en UML

Dans cet exemple les attributs Nom Preacutenom sont de type lun de 20 caractegraveres et lautre de 10 stringtandis que DateNaissance est de type et Age de type Preacutenom est un attribut multivalueacute ici date integerune personne peut avoir de 1 agrave 3 preacutenoms Age est un attribut deacuteriveacute il est calculeacute par une fonction sur DateNaissance

Meacutethodes (cf p39)

Composition (cf p5)

gt Meacutethodes

Une meacutethode (ou opeacuteration) est une fonction associeacutee agrave une classe dobjet qui permet dagir sur les objets de la classe ou qui permet agrave ces objets de renvoyer des valeurs (calculeacutees en fonction de paramegravetres)

1 methode(paramegravetres)type

Pour la modeacutelisation des bases de donneacutees les meacutethodes sont surtout utiliseacutees pour repreacutesenter des donneacutees calculeacutees (agrave linstar des attributs deacuteriveacutees) ou pour mettre en exergue des fonctions importantes du systegraveme cible Seules les meacutethodes les plus importantes sont repreacutesenteacutees lapproche est moins systeacutematique quen modeacutelisation objet par exemple

Lors de la transformation du modegravele conceptuel UML en modegravele logique relationnel les meacutethodes ne Leur repeacuterage au niveau conceptuel sert donc surtout daide-seront geacuteneacuteralement pas impleacutementeacutees

meacutemoire pour limpleacutementation au niveau applicatif

Exemple La classe Personne

Compleacutement Voir aussi

Deacutefinition Meacutethode

Syntaxe

Remarque Meacutethodes et modeacutelisation de BD

Remarque Meacutethodes relationnel relationnel-objet

methode(paramegravetres)type

Contenus annexes

40Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Au contraire un modegravele logique relationnel-objet permettra limpleacutementation de meacutethodes directement associeacutees agrave des tables Leur repeacuterage au niveau conceptuel est donc encore plus important

Transformation des meacutethodes par des vues (cf p40)

gt Transformation des meacutethodes par des vues

Lorsquune meacutethode est speacutecifieacutee sur un diagramme UML pour une classe C si cette meacutethode est une fonction relationnelle (elle renvoie une unique valeur et elle peut ecirctre reacutesolue par une requecircte SQL) alors on creacutee une vue qui reprend les attributs de la classe C et ajoute des colonnes calculeacutees pour les meacutethodes

Les attributs deacuteriveacutes eacutetant apparenteacutes agrave des meacutethodes ils peuvent eacutegalement ecirctre geacutereacutes par des vues

gt Classe dassociation

On utilise la notation des classes dassociation lorsque lon souhaite ajouter des proprieacuteteacutes agrave une association

Notation dune classe dassociation en UML

On reacuteserve en geacuteneacuteral les classes dassociation aux associations NM

Il est toujours possible de reacuteduire une classe dassociation sur une association 1N en migrant ses attributs sur la classe cocircteacute N et cest en geacuteneacuteral plus lisible ainsi

Compleacutement

Meacutethode

Remarque Attributs deacuteriveacutes

Deacutefinition Classe dassociation

Syntaxe Notation dune classe dassociation en UML

Meacutethode

Contenus annexes

41Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

-

Emplois

Selon le standard UML une classe dassociation est une classe et agrave ce titre elle peut ecirctre mobiliseacutee dans dautres associations ou dans des heacuteritages Nous deacuteconseillons neacuteanmoins ces notations qui ont tendance agrave complexifier la lecture et la transformation du diagramme

Nous conseillons donc de ne jamais associer une classe dassociation

gt Transformation des attributs

Pour chaque attribut eacuteleacutementaire et monovalueacute dune classe

on creacutee un attribut correspondant

Attribut

Classe1(ab)

Pour chaque attribut composite comprenant N sous-attributs dune classe

on creacutee N attributs correspondantsdont les noms sont la concateacutenation du nom de lattribut composite avec celui du sous-attribut

Exemple Exemple de classe dassociation

Conseil

Meacutethode Attributs simples

Meacutethode Attributs composites

Contenus annexes

42Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- - - -

Attribut composeacute

Classe1(ab_b1b_b2)

Pour chaque attribut multivalueacute b dune classe C

on creacutee une nouvelle relation RBqui comprend un attribut monovalueacute correspondant agrave bplus la cleacute de la relation repreacutesentant C la cleacute de RB est la concateacutenation des deux attributs

Attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Dans le cas ougrave le nombre maximum de est fini et petit on peut eacutegalement adopter la transformation b

suivante Classe1(ab1b2b3b4b5b6b7b8b9b10)

Si le nombre dattributs est infini ( ) cest impossible sil est trop grand ce nest pas souhaitableb[1]

On combine les regravegles eacutenonceacutees pour les attributs composeacutes et pour les attributs multivalueacutes

Attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Transformation des compositions (cf p42)

Meacutethode Attributs multivalueacutes

Meacutethode Attributs multivalueacutes (meacutethode alternative)

Meacutethode Attributs composeacutes multivalueacutes

Rappel Voir aussi

Contenus annexes

43Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

gt Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Compleacutement Attributs multivalueacutes et composeacutes

Contenus annexes

44Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

Rappel Voir aussi

Rappel

Meacutethode

Contenus annexes

45Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p48)

gt Transformation des associations 1N

Pour chaque association binaire de type 1N

on ajoute agrave la relation cocircteacute N une cleacute eacutetrangegravere vers la relation cocircteacute 1

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Meacutethode

Contenus annexes

46Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Association 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Contrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p46)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

R1

Compleacutement

Rappel

Meacutethode

Contenus annexes

47Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p47)

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Deacutefinition Projection

Contenus annexes

48Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Deacutefinition Projection

Contenus annexes

49Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Transformation des classes dassociation

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de lassociation NM

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Meacutethode Classe dassociation NM

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Exercice Objectifs

36

- - -

-

-

- - -

Vous constatez en arrivant dans lassociation que personne ne sait exactement quels sont les projets en cours ni qui fait quoi dans les projets Vous ne parvenez pas non plus agrave obtenir une liste exacte des partenaires sur lesquels lassociation peut compter La seule chose sur laquelle vous parvenez agrave mettre la main est un fichier tableur vaguement agrave jour

Vous deacutecidez quil est plus que temps de mettre en place une base de donneacutees afin dassurer la bonne gestion des informations les plus importantes pour lassociation Vous vous attachez pour cela agrave reacutealiser une analyse des besoins

Analysez les documents ci-apregraves

Etat des projets

Eacutetat des projets de lassociation Objectifs

Recueil de besoins

Agrave partir de leacutetude du fonctionnement actuel de lassociation vous relevez les choses importantes agrave geacuterer suivantes

Les membres de lassociation geacuteneacuteralement identifieacutes par leur preacutenomLes projets geacutereacutes par lassociation avec des dates de deacutebut et de fin preacutecises et un chef de projetLe deacutetail des tacircches de chaque projet avec leurs dates de deacutebut et de fin aussi et la liste de tous les membres qui y participentLa liste des partenaires des projets avec leur rocircle preacutecis pour chacun des projets auxquels ils participent

Afin de mieux geacuterer les attributions des projets il serait eacutegalement inteacuteressant de creacuteer une liste des speacutecialiteacutes correspondant agrave ce qui ce fait dans lassociation et daffecter une speacutecialiteacute agrave chaque membre ainsi quune agrave chaque projet pour voir si ce sont bien les membres les mieux adapteacutes qui travaille sur les projets

Recueil de donneacutees

Les discussions avec les anciens membres de lassociation vous apprennent les choses suivantes

Lassociation a termineacute de geacuterer les trois projets Comeacutedie Musicale geacutereacutee par Nathalie sur les trois premiers mois du semestre dautomne 1001 Science en fecircte geacutereacutee par Pierre sur tout le semestre de printemps 1003 et Nuit du picolo geacutereacutee par Julien en novembre 1001Les speacutecialiteacutes recenseacutees pour le moment sont Ville Universiteacute Sport Entreprise Culture InternationalIl faut au moins dix membres agrave lassociation (sinon elle ferme) recruter ceux qui manquentAidez lassociation agrave diviser ses projets en tacircches

Exercice Objectifs

37

- Les partenaires suivants aident ou ont aideacute lassociation la mairie pour la comeacutedie musicale et la science en fecircte qui apporte un soutien financier le ministegravere de la culture qui apporte son soutien logistique agrave la science en fecircte lassociation des commerccedilants de la ville qui apporte son soutien publicitaire agrave la comeacutedie musicale 1664 qui offre ses biegraveres agrave moitieacute prix pour la nuit du Picolo

Question 1

Question 2

Question 3

Afin de preacuteparer une analyse des besoins sommaire listez les donneacutees que vous devrez geacuterer agrave laide des documents et recueils de discussion agrave votre disposition Faites des hypothegraveses lorsque les donneacutees sont incomplegravetes ou incoheacuterentes

[ ]solution ndeg11 [ ] p59

Reacutealiser le MCD en UML et en E-A agrave partir des donneacutees preacutepareacutees dans la question preacuteceacutedente[ ]solution ndeg12 [ ] p60

Reacutealiser le MLD en relationnel en traduisant votre MCD[ ]solution ndeg13 [ ] p61

Contenus annexes

38Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

- - -

gt Attributs

Un attribut est une information eacuteleacutementaire qui caracteacuterise une classe et dont la valeur deacutepend de lobjet instancieacute

Le domaine des valeurs que peut prendre lattribut est fixeacute a prioriUn attribut est typeacute

Il peut prendre plusieurs valeurs distinctes dans son domaineUn attribut peut ecirctre multivalueacute Sa valeur alors est une fonction sur dautres attributs de la classeUn attribut peut ecirctre deacuteriveacute

(ou composite) Il joue alors le rocircle dun groupe dattributs (par Un attribut peut ecirctre composeacuteexemple une adresse peut ecirctre un attribut composeacute des attributs numeacutero type de voie nom de la voie) Cette notion renvoie agrave la notion de variable de type dans les langages de Record

programmation classiques

En UML on preacutefegravere lusage de meacutethodes aux attributs deacuteriveacutes On utilisera toujours des meacutethodes degraves que la valeur de lattribut deacuteriveacute deacutepend dautres attributs exteacuterieurs agrave sa classeEn UML on preacutefegravere lusage de compositions aux attributs composeacutes On utilisera toujours des compositions pour les attributs composeacutes et multivalueacutes

1 attributtype2 attribut_multivalueacute[nbMinValeursnbMaxValeurs]type3 attribut_deacuteriveacutetype4 attribut_composeacute5   - sous-attribut1type6   - sous-attribut2type7   -

Contenus annexes

Deacutefinition Attribut

Attention On utilise peu les attributs deacuteriveacutes et composeacutes en UML

Syntaxe

attributtype

attribut_multivalueacute[nbMinValeursnbMaxValeurs]type

attribut_deacuteriveacutetype

attribut_composeacute

  - sous-attribut1type

  - sous-attribut2type

  -

Contenus annexes

39Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Repreacutesentation dattributs en UML

Dans cet exemple les attributs Nom Preacutenom sont de type lun de 20 caractegraveres et lautre de 10 stringtandis que DateNaissance est de type et Age de type Preacutenom est un attribut multivalueacute ici date integerune personne peut avoir de 1 agrave 3 preacutenoms Age est un attribut deacuteriveacute il est calculeacute par une fonction sur DateNaissance

Meacutethodes (cf p39)

Composition (cf p5)

gt Meacutethodes

Une meacutethode (ou opeacuteration) est une fonction associeacutee agrave une classe dobjet qui permet dagir sur les objets de la classe ou qui permet agrave ces objets de renvoyer des valeurs (calculeacutees en fonction de paramegravetres)

1 methode(paramegravetres)type

Pour la modeacutelisation des bases de donneacutees les meacutethodes sont surtout utiliseacutees pour repreacutesenter des donneacutees calculeacutees (agrave linstar des attributs deacuteriveacutees) ou pour mettre en exergue des fonctions importantes du systegraveme cible Seules les meacutethodes les plus importantes sont repreacutesenteacutees lapproche est moins systeacutematique quen modeacutelisation objet par exemple

Lors de la transformation du modegravele conceptuel UML en modegravele logique relationnel les meacutethodes ne Leur repeacuterage au niveau conceptuel sert donc surtout daide-seront geacuteneacuteralement pas impleacutementeacutees

meacutemoire pour limpleacutementation au niveau applicatif

Exemple La classe Personne

Compleacutement Voir aussi

Deacutefinition Meacutethode

Syntaxe

Remarque Meacutethodes et modeacutelisation de BD

Remarque Meacutethodes relationnel relationnel-objet

methode(paramegravetres)type

Contenus annexes

40Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Au contraire un modegravele logique relationnel-objet permettra limpleacutementation de meacutethodes directement associeacutees agrave des tables Leur repeacuterage au niveau conceptuel est donc encore plus important

Transformation des meacutethodes par des vues (cf p40)

gt Transformation des meacutethodes par des vues

Lorsquune meacutethode est speacutecifieacutee sur un diagramme UML pour une classe C si cette meacutethode est une fonction relationnelle (elle renvoie une unique valeur et elle peut ecirctre reacutesolue par une requecircte SQL) alors on creacutee une vue qui reprend les attributs de la classe C et ajoute des colonnes calculeacutees pour les meacutethodes

Les attributs deacuteriveacutes eacutetant apparenteacutes agrave des meacutethodes ils peuvent eacutegalement ecirctre geacutereacutes par des vues

gt Classe dassociation

On utilise la notation des classes dassociation lorsque lon souhaite ajouter des proprieacuteteacutes agrave une association

Notation dune classe dassociation en UML

On reacuteserve en geacuteneacuteral les classes dassociation aux associations NM

Il est toujours possible de reacuteduire une classe dassociation sur une association 1N en migrant ses attributs sur la classe cocircteacute N et cest en geacuteneacuteral plus lisible ainsi

Compleacutement

Meacutethode

Remarque Attributs deacuteriveacutes

Deacutefinition Classe dassociation

Syntaxe Notation dune classe dassociation en UML

Meacutethode

Contenus annexes

41Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

-

Emplois

Selon le standard UML une classe dassociation est une classe et agrave ce titre elle peut ecirctre mobiliseacutee dans dautres associations ou dans des heacuteritages Nous deacuteconseillons neacuteanmoins ces notations qui ont tendance agrave complexifier la lecture et la transformation du diagramme

Nous conseillons donc de ne jamais associer une classe dassociation

gt Transformation des attributs

Pour chaque attribut eacuteleacutementaire et monovalueacute dune classe

on creacutee un attribut correspondant

Attribut

Classe1(ab)

Pour chaque attribut composite comprenant N sous-attributs dune classe

on creacutee N attributs correspondantsdont les noms sont la concateacutenation du nom de lattribut composite avec celui du sous-attribut

Exemple Exemple de classe dassociation

Conseil

Meacutethode Attributs simples

Meacutethode Attributs composites

Contenus annexes

42Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- - - -

Attribut composeacute

Classe1(ab_b1b_b2)

Pour chaque attribut multivalueacute b dune classe C

on creacutee une nouvelle relation RBqui comprend un attribut monovalueacute correspondant agrave bplus la cleacute de la relation repreacutesentant C la cleacute de RB est la concateacutenation des deux attributs

Attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Dans le cas ougrave le nombre maximum de est fini et petit on peut eacutegalement adopter la transformation b

suivante Classe1(ab1b2b3b4b5b6b7b8b9b10)

Si le nombre dattributs est infini ( ) cest impossible sil est trop grand ce nest pas souhaitableb[1]

On combine les regravegles eacutenonceacutees pour les attributs composeacutes et pour les attributs multivalueacutes

Attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Transformation des compositions (cf p42)

Meacutethode Attributs multivalueacutes

Meacutethode Attributs multivalueacutes (meacutethode alternative)

Meacutethode Attributs composeacutes multivalueacutes

Rappel Voir aussi

Contenus annexes

43Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

gt Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Compleacutement Attributs multivalueacutes et composeacutes

Contenus annexes

44Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

Rappel Voir aussi

Rappel

Meacutethode

Contenus annexes

45Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p48)

gt Transformation des associations 1N

Pour chaque association binaire de type 1N

on ajoute agrave la relation cocircteacute N une cleacute eacutetrangegravere vers la relation cocircteacute 1

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Meacutethode

Contenus annexes

46Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Association 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Contrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p46)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

R1

Compleacutement

Rappel

Meacutethode

Contenus annexes

47Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p47)

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Deacutefinition Projection

Contenus annexes

48Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Deacutefinition Projection

Contenus annexes

49Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Transformation des classes dassociation

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de lassociation NM

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Meacutethode Classe dassociation NM

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Exercice Objectifs

37

- Les partenaires suivants aident ou ont aideacute lassociation la mairie pour la comeacutedie musicale et la science en fecircte qui apporte un soutien financier le ministegravere de la culture qui apporte son soutien logistique agrave la science en fecircte lassociation des commerccedilants de la ville qui apporte son soutien publicitaire agrave la comeacutedie musicale 1664 qui offre ses biegraveres agrave moitieacute prix pour la nuit du Picolo

Question 1

Question 2

Question 3

Afin de preacuteparer une analyse des besoins sommaire listez les donneacutees que vous devrez geacuterer agrave laide des documents et recueils de discussion agrave votre disposition Faites des hypothegraveses lorsque les donneacutees sont incomplegravetes ou incoheacuterentes

[ ]solution ndeg11 [ ] p59

Reacutealiser le MCD en UML et en E-A agrave partir des donneacutees preacutepareacutees dans la question preacuteceacutedente[ ]solution ndeg12 [ ] p60

Reacutealiser le MLD en relationnel en traduisant votre MCD[ ]solution ndeg13 [ ] p61

Contenus annexes

38Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

- - -

gt Attributs

Un attribut est une information eacuteleacutementaire qui caracteacuterise une classe et dont la valeur deacutepend de lobjet instancieacute

Le domaine des valeurs que peut prendre lattribut est fixeacute a prioriUn attribut est typeacute

Il peut prendre plusieurs valeurs distinctes dans son domaineUn attribut peut ecirctre multivalueacute Sa valeur alors est une fonction sur dautres attributs de la classeUn attribut peut ecirctre deacuteriveacute

(ou composite) Il joue alors le rocircle dun groupe dattributs (par Un attribut peut ecirctre composeacuteexemple une adresse peut ecirctre un attribut composeacute des attributs numeacutero type de voie nom de la voie) Cette notion renvoie agrave la notion de variable de type dans les langages de Record

programmation classiques

En UML on preacutefegravere lusage de meacutethodes aux attributs deacuteriveacutes On utilisera toujours des meacutethodes degraves que la valeur de lattribut deacuteriveacute deacutepend dautres attributs exteacuterieurs agrave sa classeEn UML on preacutefegravere lusage de compositions aux attributs composeacutes On utilisera toujours des compositions pour les attributs composeacutes et multivalueacutes

1 attributtype2 attribut_multivalueacute[nbMinValeursnbMaxValeurs]type3 attribut_deacuteriveacutetype4 attribut_composeacute5   - sous-attribut1type6   - sous-attribut2type7   -

Contenus annexes

Deacutefinition Attribut

Attention On utilise peu les attributs deacuteriveacutes et composeacutes en UML

Syntaxe

attributtype

attribut_multivalueacute[nbMinValeursnbMaxValeurs]type

attribut_deacuteriveacutetype

attribut_composeacute

  - sous-attribut1type

  - sous-attribut2type

  -

Contenus annexes

39Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Repreacutesentation dattributs en UML

Dans cet exemple les attributs Nom Preacutenom sont de type lun de 20 caractegraveres et lautre de 10 stringtandis que DateNaissance est de type et Age de type Preacutenom est un attribut multivalueacute ici date integerune personne peut avoir de 1 agrave 3 preacutenoms Age est un attribut deacuteriveacute il est calculeacute par une fonction sur DateNaissance

Meacutethodes (cf p39)

Composition (cf p5)

gt Meacutethodes

Une meacutethode (ou opeacuteration) est une fonction associeacutee agrave une classe dobjet qui permet dagir sur les objets de la classe ou qui permet agrave ces objets de renvoyer des valeurs (calculeacutees en fonction de paramegravetres)

1 methode(paramegravetres)type

Pour la modeacutelisation des bases de donneacutees les meacutethodes sont surtout utiliseacutees pour repreacutesenter des donneacutees calculeacutees (agrave linstar des attributs deacuteriveacutees) ou pour mettre en exergue des fonctions importantes du systegraveme cible Seules les meacutethodes les plus importantes sont repreacutesenteacutees lapproche est moins systeacutematique quen modeacutelisation objet par exemple

Lors de la transformation du modegravele conceptuel UML en modegravele logique relationnel les meacutethodes ne Leur repeacuterage au niveau conceptuel sert donc surtout daide-seront geacuteneacuteralement pas impleacutementeacutees

meacutemoire pour limpleacutementation au niveau applicatif

Exemple La classe Personne

Compleacutement Voir aussi

Deacutefinition Meacutethode

Syntaxe

Remarque Meacutethodes et modeacutelisation de BD

Remarque Meacutethodes relationnel relationnel-objet

methode(paramegravetres)type

Contenus annexes

40Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Au contraire un modegravele logique relationnel-objet permettra limpleacutementation de meacutethodes directement associeacutees agrave des tables Leur repeacuterage au niveau conceptuel est donc encore plus important

Transformation des meacutethodes par des vues (cf p40)

gt Transformation des meacutethodes par des vues

Lorsquune meacutethode est speacutecifieacutee sur un diagramme UML pour une classe C si cette meacutethode est une fonction relationnelle (elle renvoie une unique valeur et elle peut ecirctre reacutesolue par une requecircte SQL) alors on creacutee une vue qui reprend les attributs de la classe C et ajoute des colonnes calculeacutees pour les meacutethodes

Les attributs deacuteriveacutes eacutetant apparenteacutes agrave des meacutethodes ils peuvent eacutegalement ecirctre geacutereacutes par des vues

gt Classe dassociation

On utilise la notation des classes dassociation lorsque lon souhaite ajouter des proprieacuteteacutes agrave une association

Notation dune classe dassociation en UML

On reacuteserve en geacuteneacuteral les classes dassociation aux associations NM

Il est toujours possible de reacuteduire une classe dassociation sur une association 1N en migrant ses attributs sur la classe cocircteacute N et cest en geacuteneacuteral plus lisible ainsi

Compleacutement

Meacutethode

Remarque Attributs deacuteriveacutes

Deacutefinition Classe dassociation

Syntaxe Notation dune classe dassociation en UML

Meacutethode

Contenus annexes

41Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

-

Emplois

Selon le standard UML une classe dassociation est une classe et agrave ce titre elle peut ecirctre mobiliseacutee dans dautres associations ou dans des heacuteritages Nous deacuteconseillons neacuteanmoins ces notations qui ont tendance agrave complexifier la lecture et la transformation du diagramme

Nous conseillons donc de ne jamais associer une classe dassociation

gt Transformation des attributs

Pour chaque attribut eacuteleacutementaire et monovalueacute dune classe

on creacutee un attribut correspondant

Attribut

Classe1(ab)

Pour chaque attribut composite comprenant N sous-attributs dune classe

on creacutee N attributs correspondantsdont les noms sont la concateacutenation du nom de lattribut composite avec celui du sous-attribut

Exemple Exemple de classe dassociation

Conseil

Meacutethode Attributs simples

Meacutethode Attributs composites

Contenus annexes

42Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- - - -

Attribut composeacute

Classe1(ab_b1b_b2)

Pour chaque attribut multivalueacute b dune classe C

on creacutee une nouvelle relation RBqui comprend un attribut monovalueacute correspondant agrave bplus la cleacute de la relation repreacutesentant C la cleacute de RB est la concateacutenation des deux attributs

Attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Dans le cas ougrave le nombre maximum de est fini et petit on peut eacutegalement adopter la transformation b

suivante Classe1(ab1b2b3b4b5b6b7b8b9b10)

Si le nombre dattributs est infini ( ) cest impossible sil est trop grand ce nest pas souhaitableb[1]

On combine les regravegles eacutenonceacutees pour les attributs composeacutes et pour les attributs multivalueacutes

Attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Transformation des compositions (cf p42)

Meacutethode Attributs multivalueacutes

Meacutethode Attributs multivalueacutes (meacutethode alternative)

Meacutethode Attributs composeacutes multivalueacutes

Rappel Voir aussi

Contenus annexes

43Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

gt Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Compleacutement Attributs multivalueacutes et composeacutes

Contenus annexes

44Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

Rappel Voir aussi

Rappel

Meacutethode

Contenus annexes

45Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p48)

gt Transformation des associations 1N

Pour chaque association binaire de type 1N

on ajoute agrave la relation cocircteacute N une cleacute eacutetrangegravere vers la relation cocircteacute 1

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Meacutethode

Contenus annexes

46Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Association 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Contrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p46)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

R1

Compleacutement

Rappel

Meacutethode

Contenus annexes

47Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p47)

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Deacutefinition Projection

Contenus annexes

48Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Deacutefinition Projection

Contenus annexes

49Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Transformation des classes dassociation

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de lassociation NM

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Meacutethode Classe dassociation NM

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Contenus annexes

38Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

- - -

gt Attributs

Un attribut est une information eacuteleacutementaire qui caracteacuterise une classe et dont la valeur deacutepend de lobjet instancieacute

Le domaine des valeurs que peut prendre lattribut est fixeacute a prioriUn attribut est typeacute

Il peut prendre plusieurs valeurs distinctes dans son domaineUn attribut peut ecirctre multivalueacute Sa valeur alors est une fonction sur dautres attributs de la classeUn attribut peut ecirctre deacuteriveacute

(ou composite) Il joue alors le rocircle dun groupe dattributs (par Un attribut peut ecirctre composeacuteexemple une adresse peut ecirctre un attribut composeacute des attributs numeacutero type de voie nom de la voie) Cette notion renvoie agrave la notion de variable de type dans les langages de Record

programmation classiques

En UML on preacutefegravere lusage de meacutethodes aux attributs deacuteriveacutes On utilisera toujours des meacutethodes degraves que la valeur de lattribut deacuteriveacute deacutepend dautres attributs exteacuterieurs agrave sa classeEn UML on preacutefegravere lusage de compositions aux attributs composeacutes On utilisera toujours des compositions pour les attributs composeacutes et multivalueacutes

1 attributtype2 attribut_multivalueacute[nbMinValeursnbMaxValeurs]type3 attribut_deacuteriveacutetype4 attribut_composeacute5   - sous-attribut1type6   - sous-attribut2type7   -

Contenus annexes

Deacutefinition Attribut

Attention On utilise peu les attributs deacuteriveacutes et composeacutes en UML

Syntaxe

attributtype

attribut_multivalueacute[nbMinValeursnbMaxValeurs]type

attribut_deacuteriveacutetype

attribut_composeacute

  - sous-attribut1type

  - sous-attribut2type

  -

Contenus annexes

39Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Repreacutesentation dattributs en UML

Dans cet exemple les attributs Nom Preacutenom sont de type lun de 20 caractegraveres et lautre de 10 stringtandis que DateNaissance est de type et Age de type Preacutenom est un attribut multivalueacute ici date integerune personne peut avoir de 1 agrave 3 preacutenoms Age est un attribut deacuteriveacute il est calculeacute par une fonction sur DateNaissance

Meacutethodes (cf p39)

Composition (cf p5)

gt Meacutethodes

Une meacutethode (ou opeacuteration) est une fonction associeacutee agrave une classe dobjet qui permet dagir sur les objets de la classe ou qui permet agrave ces objets de renvoyer des valeurs (calculeacutees en fonction de paramegravetres)

1 methode(paramegravetres)type

Pour la modeacutelisation des bases de donneacutees les meacutethodes sont surtout utiliseacutees pour repreacutesenter des donneacutees calculeacutees (agrave linstar des attributs deacuteriveacutees) ou pour mettre en exergue des fonctions importantes du systegraveme cible Seules les meacutethodes les plus importantes sont repreacutesenteacutees lapproche est moins systeacutematique quen modeacutelisation objet par exemple

Lors de la transformation du modegravele conceptuel UML en modegravele logique relationnel les meacutethodes ne Leur repeacuterage au niveau conceptuel sert donc surtout daide-seront geacuteneacuteralement pas impleacutementeacutees

meacutemoire pour limpleacutementation au niveau applicatif

Exemple La classe Personne

Compleacutement Voir aussi

Deacutefinition Meacutethode

Syntaxe

Remarque Meacutethodes et modeacutelisation de BD

Remarque Meacutethodes relationnel relationnel-objet

methode(paramegravetres)type

Contenus annexes

40Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Au contraire un modegravele logique relationnel-objet permettra limpleacutementation de meacutethodes directement associeacutees agrave des tables Leur repeacuterage au niveau conceptuel est donc encore plus important

Transformation des meacutethodes par des vues (cf p40)

gt Transformation des meacutethodes par des vues

Lorsquune meacutethode est speacutecifieacutee sur un diagramme UML pour une classe C si cette meacutethode est une fonction relationnelle (elle renvoie une unique valeur et elle peut ecirctre reacutesolue par une requecircte SQL) alors on creacutee une vue qui reprend les attributs de la classe C et ajoute des colonnes calculeacutees pour les meacutethodes

Les attributs deacuteriveacutes eacutetant apparenteacutes agrave des meacutethodes ils peuvent eacutegalement ecirctre geacutereacutes par des vues

gt Classe dassociation

On utilise la notation des classes dassociation lorsque lon souhaite ajouter des proprieacuteteacutes agrave une association

Notation dune classe dassociation en UML

On reacuteserve en geacuteneacuteral les classes dassociation aux associations NM

Il est toujours possible de reacuteduire une classe dassociation sur une association 1N en migrant ses attributs sur la classe cocircteacute N et cest en geacuteneacuteral plus lisible ainsi

Compleacutement

Meacutethode

Remarque Attributs deacuteriveacutes

Deacutefinition Classe dassociation

Syntaxe Notation dune classe dassociation en UML

Meacutethode

Contenus annexes

41Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

-

Emplois

Selon le standard UML une classe dassociation est une classe et agrave ce titre elle peut ecirctre mobiliseacutee dans dautres associations ou dans des heacuteritages Nous deacuteconseillons neacuteanmoins ces notations qui ont tendance agrave complexifier la lecture et la transformation du diagramme

Nous conseillons donc de ne jamais associer une classe dassociation

gt Transformation des attributs

Pour chaque attribut eacuteleacutementaire et monovalueacute dune classe

on creacutee un attribut correspondant

Attribut

Classe1(ab)

Pour chaque attribut composite comprenant N sous-attributs dune classe

on creacutee N attributs correspondantsdont les noms sont la concateacutenation du nom de lattribut composite avec celui du sous-attribut

Exemple Exemple de classe dassociation

Conseil

Meacutethode Attributs simples

Meacutethode Attributs composites

Contenus annexes

42Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- - - -

Attribut composeacute

Classe1(ab_b1b_b2)

Pour chaque attribut multivalueacute b dune classe C

on creacutee une nouvelle relation RBqui comprend un attribut monovalueacute correspondant agrave bplus la cleacute de la relation repreacutesentant C la cleacute de RB est la concateacutenation des deux attributs

Attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Dans le cas ougrave le nombre maximum de est fini et petit on peut eacutegalement adopter la transformation b

suivante Classe1(ab1b2b3b4b5b6b7b8b9b10)

Si le nombre dattributs est infini ( ) cest impossible sil est trop grand ce nest pas souhaitableb[1]

On combine les regravegles eacutenonceacutees pour les attributs composeacutes et pour les attributs multivalueacutes

Attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Transformation des compositions (cf p42)

Meacutethode Attributs multivalueacutes

Meacutethode Attributs multivalueacutes (meacutethode alternative)

Meacutethode Attributs composeacutes multivalueacutes

Rappel Voir aussi

Contenus annexes

43Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

gt Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Compleacutement Attributs multivalueacutes et composeacutes

Contenus annexes

44Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

Rappel Voir aussi

Rappel

Meacutethode

Contenus annexes

45Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p48)

gt Transformation des associations 1N

Pour chaque association binaire de type 1N

on ajoute agrave la relation cocircteacute N une cleacute eacutetrangegravere vers la relation cocircteacute 1

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Meacutethode

Contenus annexes

46Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Association 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Contrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p46)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

R1

Compleacutement

Rappel

Meacutethode

Contenus annexes

47Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p47)

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Deacutefinition Projection

Contenus annexes

48Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Deacutefinition Projection

Contenus annexes

49Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Transformation des classes dassociation

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de lassociation NM

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Meacutethode Classe dassociation NM

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Contenus annexes

39Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Repreacutesentation dattributs en UML

Dans cet exemple les attributs Nom Preacutenom sont de type lun de 20 caractegraveres et lautre de 10 stringtandis que DateNaissance est de type et Age de type Preacutenom est un attribut multivalueacute ici date integerune personne peut avoir de 1 agrave 3 preacutenoms Age est un attribut deacuteriveacute il est calculeacute par une fonction sur DateNaissance

Meacutethodes (cf p39)

Composition (cf p5)

gt Meacutethodes

Une meacutethode (ou opeacuteration) est une fonction associeacutee agrave une classe dobjet qui permet dagir sur les objets de la classe ou qui permet agrave ces objets de renvoyer des valeurs (calculeacutees en fonction de paramegravetres)

1 methode(paramegravetres)type

Pour la modeacutelisation des bases de donneacutees les meacutethodes sont surtout utiliseacutees pour repreacutesenter des donneacutees calculeacutees (agrave linstar des attributs deacuteriveacutees) ou pour mettre en exergue des fonctions importantes du systegraveme cible Seules les meacutethodes les plus importantes sont repreacutesenteacutees lapproche est moins systeacutematique quen modeacutelisation objet par exemple

Lors de la transformation du modegravele conceptuel UML en modegravele logique relationnel les meacutethodes ne Leur repeacuterage au niveau conceptuel sert donc surtout daide-seront geacuteneacuteralement pas impleacutementeacutees

meacutemoire pour limpleacutementation au niveau applicatif

Exemple La classe Personne

Compleacutement Voir aussi

Deacutefinition Meacutethode

Syntaxe

Remarque Meacutethodes et modeacutelisation de BD

Remarque Meacutethodes relationnel relationnel-objet

methode(paramegravetres)type

Contenus annexes

40Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Au contraire un modegravele logique relationnel-objet permettra limpleacutementation de meacutethodes directement associeacutees agrave des tables Leur repeacuterage au niveau conceptuel est donc encore plus important

Transformation des meacutethodes par des vues (cf p40)

gt Transformation des meacutethodes par des vues

Lorsquune meacutethode est speacutecifieacutee sur un diagramme UML pour une classe C si cette meacutethode est une fonction relationnelle (elle renvoie une unique valeur et elle peut ecirctre reacutesolue par une requecircte SQL) alors on creacutee une vue qui reprend les attributs de la classe C et ajoute des colonnes calculeacutees pour les meacutethodes

Les attributs deacuteriveacutes eacutetant apparenteacutes agrave des meacutethodes ils peuvent eacutegalement ecirctre geacutereacutes par des vues

gt Classe dassociation

On utilise la notation des classes dassociation lorsque lon souhaite ajouter des proprieacuteteacutes agrave une association

Notation dune classe dassociation en UML

On reacuteserve en geacuteneacuteral les classes dassociation aux associations NM

Il est toujours possible de reacuteduire une classe dassociation sur une association 1N en migrant ses attributs sur la classe cocircteacute N et cest en geacuteneacuteral plus lisible ainsi

Compleacutement

Meacutethode

Remarque Attributs deacuteriveacutes

Deacutefinition Classe dassociation

Syntaxe Notation dune classe dassociation en UML

Meacutethode

Contenus annexes

41Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

-

Emplois

Selon le standard UML une classe dassociation est une classe et agrave ce titre elle peut ecirctre mobiliseacutee dans dautres associations ou dans des heacuteritages Nous deacuteconseillons neacuteanmoins ces notations qui ont tendance agrave complexifier la lecture et la transformation du diagramme

Nous conseillons donc de ne jamais associer une classe dassociation

gt Transformation des attributs

Pour chaque attribut eacuteleacutementaire et monovalueacute dune classe

on creacutee un attribut correspondant

Attribut

Classe1(ab)

Pour chaque attribut composite comprenant N sous-attributs dune classe

on creacutee N attributs correspondantsdont les noms sont la concateacutenation du nom de lattribut composite avec celui du sous-attribut

Exemple Exemple de classe dassociation

Conseil

Meacutethode Attributs simples

Meacutethode Attributs composites

Contenus annexes

42Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- - - -

Attribut composeacute

Classe1(ab_b1b_b2)

Pour chaque attribut multivalueacute b dune classe C

on creacutee une nouvelle relation RBqui comprend un attribut monovalueacute correspondant agrave bplus la cleacute de la relation repreacutesentant C la cleacute de RB est la concateacutenation des deux attributs

Attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Dans le cas ougrave le nombre maximum de est fini et petit on peut eacutegalement adopter la transformation b

suivante Classe1(ab1b2b3b4b5b6b7b8b9b10)

Si le nombre dattributs est infini ( ) cest impossible sil est trop grand ce nest pas souhaitableb[1]

On combine les regravegles eacutenonceacutees pour les attributs composeacutes et pour les attributs multivalueacutes

Attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Transformation des compositions (cf p42)

Meacutethode Attributs multivalueacutes

Meacutethode Attributs multivalueacutes (meacutethode alternative)

Meacutethode Attributs composeacutes multivalueacutes

Rappel Voir aussi

Contenus annexes

43Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

gt Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Compleacutement Attributs multivalueacutes et composeacutes

Contenus annexes

44Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

Rappel Voir aussi

Rappel

Meacutethode

Contenus annexes

45Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p48)

gt Transformation des associations 1N

Pour chaque association binaire de type 1N

on ajoute agrave la relation cocircteacute N une cleacute eacutetrangegravere vers la relation cocircteacute 1

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Meacutethode

Contenus annexes

46Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Association 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Contrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p46)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

R1

Compleacutement

Rappel

Meacutethode

Contenus annexes

47Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p47)

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Deacutefinition Projection

Contenus annexes

48Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Deacutefinition Projection

Contenus annexes

49Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Transformation des classes dassociation

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de lassociation NM

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Meacutethode Classe dassociation NM

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Contenus annexes

40Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Au contraire un modegravele logique relationnel-objet permettra limpleacutementation de meacutethodes directement associeacutees agrave des tables Leur repeacuterage au niveau conceptuel est donc encore plus important

Transformation des meacutethodes par des vues (cf p40)

gt Transformation des meacutethodes par des vues

Lorsquune meacutethode est speacutecifieacutee sur un diagramme UML pour une classe C si cette meacutethode est une fonction relationnelle (elle renvoie une unique valeur et elle peut ecirctre reacutesolue par une requecircte SQL) alors on creacutee une vue qui reprend les attributs de la classe C et ajoute des colonnes calculeacutees pour les meacutethodes

Les attributs deacuteriveacutes eacutetant apparenteacutes agrave des meacutethodes ils peuvent eacutegalement ecirctre geacutereacutes par des vues

gt Classe dassociation

On utilise la notation des classes dassociation lorsque lon souhaite ajouter des proprieacuteteacutes agrave une association

Notation dune classe dassociation en UML

On reacuteserve en geacuteneacuteral les classes dassociation aux associations NM

Il est toujours possible de reacuteduire une classe dassociation sur une association 1N en migrant ses attributs sur la classe cocircteacute N et cest en geacuteneacuteral plus lisible ainsi

Compleacutement

Meacutethode

Remarque Attributs deacuteriveacutes

Deacutefinition Classe dassociation

Syntaxe Notation dune classe dassociation en UML

Meacutethode

Contenus annexes

41Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

-

Emplois

Selon le standard UML une classe dassociation est une classe et agrave ce titre elle peut ecirctre mobiliseacutee dans dautres associations ou dans des heacuteritages Nous deacuteconseillons neacuteanmoins ces notations qui ont tendance agrave complexifier la lecture et la transformation du diagramme

Nous conseillons donc de ne jamais associer une classe dassociation

gt Transformation des attributs

Pour chaque attribut eacuteleacutementaire et monovalueacute dune classe

on creacutee un attribut correspondant

Attribut

Classe1(ab)

Pour chaque attribut composite comprenant N sous-attributs dune classe

on creacutee N attributs correspondantsdont les noms sont la concateacutenation du nom de lattribut composite avec celui du sous-attribut

Exemple Exemple de classe dassociation

Conseil

Meacutethode Attributs simples

Meacutethode Attributs composites

Contenus annexes

42Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- - - -

Attribut composeacute

Classe1(ab_b1b_b2)

Pour chaque attribut multivalueacute b dune classe C

on creacutee une nouvelle relation RBqui comprend un attribut monovalueacute correspondant agrave bplus la cleacute de la relation repreacutesentant C la cleacute de RB est la concateacutenation des deux attributs

Attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Dans le cas ougrave le nombre maximum de est fini et petit on peut eacutegalement adopter la transformation b

suivante Classe1(ab1b2b3b4b5b6b7b8b9b10)

Si le nombre dattributs est infini ( ) cest impossible sil est trop grand ce nest pas souhaitableb[1]

On combine les regravegles eacutenonceacutees pour les attributs composeacutes et pour les attributs multivalueacutes

Attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Transformation des compositions (cf p42)

Meacutethode Attributs multivalueacutes

Meacutethode Attributs multivalueacutes (meacutethode alternative)

Meacutethode Attributs composeacutes multivalueacutes

Rappel Voir aussi

Contenus annexes

43Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

gt Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Compleacutement Attributs multivalueacutes et composeacutes

Contenus annexes

44Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

Rappel Voir aussi

Rappel

Meacutethode

Contenus annexes

45Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p48)

gt Transformation des associations 1N

Pour chaque association binaire de type 1N

on ajoute agrave la relation cocircteacute N une cleacute eacutetrangegravere vers la relation cocircteacute 1

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Meacutethode

Contenus annexes

46Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Association 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Contrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p46)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

R1

Compleacutement

Rappel

Meacutethode

Contenus annexes

47Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p47)

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Deacutefinition Projection

Contenus annexes

48Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Deacutefinition Projection

Contenus annexes

49Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Transformation des classes dassociation

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de lassociation NM

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Meacutethode Classe dassociation NM

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Contenus annexes

41Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

-

Emplois

Selon le standard UML une classe dassociation est une classe et agrave ce titre elle peut ecirctre mobiliseacutee dans dautres associations ou dans des heacuteritages Nous deacuteconseillons neacuteanmoins ces notations qui ont tendance agrave complexifier la lecture et la transformation du diagramme

Nous conseillons donc de ne jamais associer une classe dassociation

gt Transformation des attributs

Pour chaque attribut eacuteleacutementaire et monovalueacute dune classe

on creacutee un attribut correspondant

Attribut

Classe1(ab)

Pour chaque attribut composite comprenant N sous-attributs dune classe

on creacutee N attributs correspondantsdont les noms sont la concateacutenation du nom de lattribut composite avec celui du sous-attribut

Exemple Exemple de classe dassociation

Conseil

Meacutethode Attributs simples

Meacutethode Attributs composites

Contenus annexes

42Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- - - -

Attribut composeacute

Classe1(ab_b1b_b2)

Pour chaque attribut multivalueacute b dune classe C

on creacutee une nouvelle relation RBqui comprend un attribut monovalueacute correspondant agrave bplus la cleacute de la relation repreacutesentant C la cleacute de RB est la concateacutenation des deux attributs

Attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Dans le cas ougrave le nombre maximum de est fini et petit on peut eacutegalement adopter la transformation b

suivante Classe1(ab1b2b3b4b5b6b7b8b9b10)

Si le nombre dattributs est infini ( ) cest impossible sil est trop grand ce nest pas souhaitableb[1]

On combine les regravegles eacutenonceacutees pour les attributs composeacutes et pour les attributs multivalueacutes

Attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Transformation des compositions (cf p42)

Meacutethode Attributs multivalueacutes

Meacutethode Attributs multivalueacutes (meacutethode alternative)

Meacutethode Attributs composeacutes multivalueacutes

Rappel Voir aussi

Contenus annexes

43Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

gt Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Compleacutement Attributs multivalueacutes et composeacutes

Contenus annexes

44Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

Rappel Voir aussi

Rappel

Meacutethode

Contenus annexes

45Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p48)

gt Transformation des associations 1N

Pour chaque association binaire de type 1N

on ajoute agrave la relation cocircteacute N une cleacute eacutetrangegravere vers la relation cocircteacute 1

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Meacutethode

Contenus annexes

46Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Association 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Contrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p46)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

R1

Compleacutement

Rappel

Meacutethode

Contenus annexes

47Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p47)

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Deacutefinition Projection

Contenus annexes

48Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Deacutefinition Projection

Contenus annexes

49Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Transformation des classes dassociation

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de lassociation NM

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Meacutethode Classe dassociation NM

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Contenus annexes

42Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- - - -

Attribut composeacute

Classe1(ab_b1b_b2)

Pour chaque attribut multivalueacute b dune classe C

on creacutee une nouvelle relation RBqui comprend un attribut monovalueacute correspondant agrave bplus la cleacute de la relation repreacutesentant C la cleacute de RB est la concateacutenation des deux attributs

Attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Dans le cas ougrave le nombre maximum de est fini et petit on peut eacutegalement adopter la transformation b

suivante Classe1(ab1b2b3b4b5b6b7b8b9b10)

Si le nombre dattributs est infini ( ) cest impossible sil est trop grand ce nest pas souhaitableb[1]

On combine les regravegles eacutenonceacutees pour les attributs composeacutes et pour les attributs multivalueacutes

Attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Transformation des compositions (cf p42)

Meacutethode Attributs multivalueacutes

Meacutethode Attributs multivalueacutes (meacutethode alternative)

Meacutethode Attributs composeacutes multivalueacutes

Rappel Voir aussi

Contenus annexes

43Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

gt Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Compleacutement Attributs multivalueacutes et composeacutes

Contenus annexes

44Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

Rappel Voir aussi

Rappel

Meacutethode

Contenus annexes

45Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p48)

gt Transformation des associations 1N

Pour chaque association binaire de type 1N

on ajoute agrave la relation cocircteacute N une cleacute eacutetrangegravere vers la relation cocircteacute 1

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Meacutethode

Contenus annexes

46Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Association 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Contrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p46)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

R1

Compleacutement

Rappel

Meacutethode

Contenus annexes

47Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p47)

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Deacutefinition Projection

Contenus annexes

48Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Deacutefinition Projection

Contenus annexes

49Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Transformation des classes dassociation

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de lassociation NM

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Meacutethode Classe dassociation NM

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Contenus annexes

43Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

gt Transformation des compositions

Une composition

est transformeacutee comme une association 1Npuis on ajoute agrave la cleacute de la classe partie (dite cleacute locale) la cleacute eacutetrangegravere vers la classe composite pour construire une cleacute primaire composeacutee

Composition

Classe1(ab)

Classe2(ca=gtClasse1d)

Pour identifier une classe partie dans une composition on utilise une cleacute locale concateacuteneacutee agrave la cleacute eacutetrangegravere vers la classe composite afin dexprimer la deacutependance entre les deux classes

Si une cleacute naturelle globale permet didentifier de faccedilon unique une partie indeacutependamment du tout on preacutefeacuterera la conserver comme cleacute candidate plutocirct que de la prendre pour cleacute primaire

Si on la choisit comme cleacute primaire cela revient agrave avoir transformeacute la composition en agreacutegation en redonnant une vie propre aux objets composants

Une composition est transformeacutee selon les mecircmes principes quune entiteacute faible en E-A

La transformation dun attribut composeacute multivalueacute donne un reacutesultat eacutequivalent agrave la transformation dune composition

Composition et attribut composeacute multivalueacute

Classe1(a)

RB(b_b1b_b2a=gtClasse1)

Meacutethode

Remarque Cleacute locale

Compleacutement Composition et entiteacutes faibles en E-A

Compleacutement Attributs multivalueacutes et composeacutes

Contenus annexes

44Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

Rappel Voir aussi

Rappel

Meacutethode

Contenus annexes

45Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p48)

gt Transformation des associations 1N

Pour chaque association binaire de type 1N

on ajoute agrave la relation cocircteacute N une cleacute eacutetrangegravere vers la relation cocircteacute 1

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Meacutethode

Contenus annexes

46Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Association 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Contrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p46)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

R1

Compleacutement

Rappel

Meacutethode

Contenus annexes

47Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p47)

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Deacutefinition Projection

Contenus annexes

48Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Deacutefinition Projection

Contenus annexes

49Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Transformation des classes dassociation

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de lassociation NM

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Meacutethode Classe dassociation NM

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Contenus annexes

44Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

La transformation dune composition avec un seul attribut pour la classe composante donne un reacutesultat eacutequivalent agrave la transformation dun attribut multivalueacute

Composition et attribut multivalueacute

Classe1(a)

RB(ba=gtClasse1)

Transformation des attributs (cf p41)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

Rappel Voir aussi

Rappel

Meacutethode

Contenus annexes

45Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p48)

gt Transformation des associations 1N

Pour chaque association binaire de type 1N

on ajoute agrave la relation cocircteacute N une cleacute eacutetrangegravere vers la relation cocircteacute 1

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Meacutethode

Contenus annexes

46Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Association 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Contrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p46)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

R1

Compleacutement

Rappel

Meacutethode

Contenus annexes

47Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p47)

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Deacutefinition Projection

Contenus annexes

48Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Deacutefinition Projection

Contenus annexes

49Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Transformation des classes dassociation

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de lassociation NM

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Meacutethode Classe dassociation NM

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Contenus annexes

45Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p48)

gt Transformation des associations 1N

Pour chaque association binaire de type 1N

on ajoute agrave la relation cocircteacute N une cleacute eacutetrangegravere vers la relation cocircteacute 1

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Meacutethode

Contenus annexes

46Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Association 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Contrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p46)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

R1

Compleacutement

Rappel

Meacutethode

Contenus annexes

47Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p47)

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Deacutefinition Projection

Contenus annexes

48Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Deacutefinition Projection

Contenus annexes

49Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Transformation des classes dassociation

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de lassociation NM

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Meacutethode Classe dassociation NM

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Contenus annexes

46Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Association 1N

Classe1(ab)

Classe2(cda=gtClasse1)

Contrainte de cardinaliteacute minimale 1 dans les associations 1N (cf p46)

gt Contrainte de cardinaliteacute minimale 1 dans les associations 1N

Transformation des associations 1N (cf p45)

Association 1N

Si la cardinaliteacute est exactement 1 (11) cocircteacute 1 alors on ajoutera une contrainte de non nulliteacute sur la cleacute eacutetrangegraveresi la cardinaliteacute est au moins 1 (1N) cocircteacute N on ajoutera une contrainte dexistence de tuples reacutefeacuterenccedilant pour chaque tuple de la relation reacutefeacuterenceacutee

R1(ab)

R2(cda=gtR1)

Contraintes a NOT NULL et PROJECTION(R1a) = PROJECTION(R2a)

On veut que tous les eacuteleacutements de R1 soient reacutefeacuterenceacutes au moins une fois dans R2 donc il nexiste pas de tuple de R1 qui ne soit pas reacutefeacuterenceacute par R2a donc PROJECTION(R1a) = PROJECTION(R2

a)

a b

1 Lorem

2 Ipsum

R1

Compleacutement

Rappel

Meacutethode

Contenus annexes

47Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p47)

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Deacutefinition Projection

Contenus annexes

48Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Deacutefinition Projection

Contenus annexes

49Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Transformation des classes dassociation

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de lassociation NM

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Meacutethode Classe dassociation NM

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Contenus annexes

47Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

R2

Si la cardinaliteacute cocircteacute 1 est 01 alors il peut exister la valeur NULL dans R2a et donc la contrainte devient PROJECTION(Classe1a) PROJECTION(Classe2a)

a b

1 Lorem

2 Ipsum

R1

c b a=gtR1

a Sed 1

b Ut 2

c Perspiciatis 2

d Unde NULL

R2

Projection (cf p47)

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Compleacutement Cas geacuteneacuteral PROJECTION(R1a) PROJECTION(R2a)

Rappel La projection eacutelimine les doublons

Deacutefinition Projection

Contenus annexes

48Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Deacutefinition Projection

Contenus annexes

49Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Transformation des classes dassociation

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de lassociation NM

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Meacutethode Classe dassociation NM

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Contenus annexes

48Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Projection

La projection est une opeacuteration unaire (cest agrave dire portant sur une seule relation) La projection de R1 sur une partie de ses attributs A1 A2 produit une relation R2 dont le scheacutema est restreint aux attributs mentionneacutes en opeacuterande comportant les mecircmes tuples que R1 et dont les doublons sont eacutelimineacutes

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Deacutefinition Projection

Contenus annexes

49Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Transformation des classes dassociation

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de lassociation NM

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Meacutethode Classe dassociation NM

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Contenus annexes

49Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

R = Projection (R1 a1 a2 )

Soit la relation suivante Personne (nom preacutenom age)

nom preacutenom age

Dupont Pierre 20

Durand Jean 30

Personne

Soit lopeacuteration R = Projection (Personne nom age)

On obtient alors la relation R composeacutee des tuples suivants

nom age

Dupont 20

Durand 30

R

Apregraves suppression dune partie des attributs du scheacutema la relation peut comporter des doublons Eacutetant donneacute que lon ne pourrait plus identifier ces doublons les uns par rapport aux autres la seule solution senseacutee est donc de consideacuterer que deux doublons sont eacutequivalents et donc de nen garder quun seul dans la relation reacutesultante

R = (R1 a1 a2 )

R = (R1) a1a2

gt Transformation des classes dassociation

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de lassociation NM

Syntaxe

Exemple

Remarque La projection eacutelimine les doublons

Compleacutement Syntaxes alternatives

Meacutethode Classe dassociation NM

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Contenus annexes

50Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Classe assocation (NM)

Classe1(ab)

Classe2(cd)

Assoc(a=gtClasse1c=gtClasse2ef)

Les attributs de la classe dassociation sont ajouteacutes agrave la relation issue de la classe cocircteacute N

Les attributs de la classe dassociation sont ajouteacutes agrave la relation qui a eacuteteacute choisie pour recevoir la cleacute eacutetrangegravere Si les deux classes ont eacuteteacute fusionneacutees en une seule relation les attributs sont ajouteacutes agrave celle-ci

Compleacutement Classe dassociation 1N

Compleacutement Classe dassociation 11

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Questions de synthegravese

51Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Quand doit-on expliciter des contraintes sur les associations

Le passage UML vers relationnel est-il systeacutematique ou soumis agrave interpreacutetation (pourrait-il ecirctre reacutealiseacute par un algorithme)

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 11

Quand doit-on utiliser les paquetages

Questions de synthegravese

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Questions de synthegravese

52Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Solutions des exercices

53Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 16gt Solution ndeg2

Exercice p 5gt Solution ndeg1

En analysant le scheacutema UML ci-apregraves seacutelectionner toutes les assertions vraies

MCD UML

Une association peut employer un directeur

Une association peut employer plusieurs directeurs

Une association peut ne pas employer de directeur

Une filiale peut appartenir agrave plusieurs entreprises

Il existe des organisations qui ne sont ni des entreprises ni des associations

Quel(s) scheacutema(s) relationnel(s) corresponde(nt) au modegravele UML suivant

Solutions des exercices

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Solutions des exercices

54Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 17gt Solution ndeg3

Volley ball

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Rencontre=gtEquipe Score Ville=gtVille)Vile(CodePostal Nom)

Joueur(Numero Equipe=gtEquipe Nom Poste Ville=gtVille)

Equipe(Nom Ville=gtVille)

Ville(CodePostal Nom)Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom Ville=gtVille)

Equipe(Nom Joueur=gtJoueur Poste Ville=gtVille)

Ville(CodePostal Nom)

Rencontre(Equipe1=gtEquipe Equipe2=gtEquipe Score)

Joueur(Numero Nom)

E q u i p e(Nom)

Ville(CodePostal Nom)

Habite(Numero=gtJoueur CodePostal=gtVille) Joue(Numero=gtJoueur Nom=gtEquipe Poste)

EstSituee(Nom=gtEquipe CodePostal=gtVille) Rencontre(NomE1=gtEquipe NomE2=gtEquipe Score)

Soit le scheacutema UML suivant

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Solutions des exercices

55Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Villes

Quelles sont les modegraveles relationnels qui correspondent agrave ce modegravele conceptuel

P a y s ( N o m Capitale=gtVille)

Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion) Ville(Nom Departement=gtDepartement)

Pays(Nom Capitale=gtVille)Region(Nom Prefecture=gtVille Pays=gtPays)

Departement(Nom Region=gtRegion Pays=gtPays)

Ville(Nom Departement=gtDepartement Region=gtRegion Pays=gtPays)

P a y s(Nom)

Region(Nom Pays=gtPays)

Departement(Nom Region=gtRegion)

Ville(Nom Departement=gtDepartement Capitale=gtPays Prefecture=gtRegion)

P a y s ( N o m Capitale=gtVille)

Region(Nom Pays=gtPays Prefecture=gtVille)

Departement(Nom Region=gtRegion)

V i l l e ( N o m Departement=gtDepartement)

Pays(Nom CapitaleVille=gtVille CapitaleDepartement=gtVille CapitaleRegion=gtVille CapitalePays=gtVille)

Region(Nom Pays=gtPays PrefectureVille=gtVille PrefectureDepartement=gtVille PrefectureRegion=gtVille PrefecturePays=gtVille)

Departement(Nom Region=gtRegion Pays=gtRegion)

Ville(Nom Departement=gtDepartement Region=gtDepartement Pays=gtDepartement)

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Solutions des exercices

56Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

-

-

Exercice p 31gt Solution ndeg4

1 2 3 4

Seule la derniegravere proposition est correcte car toutes les entiteacutes (sauf pays) sont faibles et heacuteritent donc de la cleacute primaire de leur entiteacute identifiante (car les associations sont ici des associations de composition)

Cleacute de Pays = NomCleacute de Reacutegion = NomReacutegion + cleacute de pays (entiteacute faible) = NomR+NomPCleacute de Deacutepartement = NomDep + cleacute de reacutegion (entiteacute faible) = NomD+NomR+NomPCleacute de Ville = NomVille + cleacute de deacutepartement (entiteacute faible) = NomV+NomD+NomR+NomP

On note dans leacutenonceacute que les contre-indications sont aux meacutedicaments et par ailleurs on note dans les deacutedieacuteedonneacutees exemples que les contre-indications sont eacutenonceacutees speacutecifiquement par rapport aux meacutedicaments

On a donc affaire agrave une composition

Ce nest pas parce que les composants sappellent ainsi dans leacutenonceacute que lon est en preacutesence dune composition Ici les composants peuvent exister sans meacutedicament et ecirctre partageacutes entre plusieurs meacutedicaments il sagit donc dune agreacutegation

On rappelle que les associations doivent ecirctre obligatoirement nommeacutees sauf dans le cas drsquoagreacutegations et de compositions qui sont des associations deacutejagrave nommeacuteesLes contre-indications peuvent eacutegalement ecirctre modeacuteliseacutees comme un attribut multivalueacute

Associations (cf p)

Composition (cf p5)

Remarque

Remarque

Modeacutelisation de la base en UML

Rappel

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Solutions des exercices

57Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg7

Exercice p 31gt Solution ndeg6

Exercice p 31gt Solution ndeg5

On a choisi dutiliser ici le steacutereacuteotype dataType on aurait pu choisir deux attributs dans ou un un Medicamentattribut multivalueacute

Type utilisateurs steacutereacuteotype ltltdataTypegtgt (cf p24)

1 Medicament (nomvarchar descriptionvarchar description_longuevarchar conditionnementnumber)

2 Contre_indication(medicament=gtMedicament importancevarchar descriptionvarchar)

3 Composant (codevarchar intitulevarchar)4 Composition (medicament=gtMedicament composant=gtComposant)5

En labsence de cleacute locale naturelle pour Contre_indication on ajoute une cleacute locale artificielle (il y pknum

aura plusieurs valeurs identiques de pknum)

1 diplome (codechar(3) intitulevarchar) avec intitule KEY

Compleacutement

Remarque

Medicament (nomvarchar descriptionvarchar description_longuevarchar

conditionnementnumber)Contre_indication(medicament=gtMedicament importancevarchar description

varchar)Composant (codevarchar intitulevarchar)

Composition (medicament=gtMedicament composant=gtComposant)

diplome (codechar(3) intitulevarchar) avec intitule KEY

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Solutions des exercices

58Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 32gt Solution ndeg8

2 etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL3 uv (codechar(5) titrevarchar) avec titre KEY4 note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

1 Personnage (designationstring prixfloat identiteSecretestring genresuperheacutero supervilain mentor=gtPersonnage(designation))

23 Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

45 Repaire (designationstring prixfloat emplacementGeographiquestring capaciteinteger)

67 Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras droit torse jambe gauche jambe droite couleurstring)

89 Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

1011 Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Lheacuteritage est exclusif un personnage ne peut pas ecirctre un veacutehicule ou un repaire et la classe megravere est abstraite Il sagit donc de lun des cas simples de transformation heacuteritage par les classes filles

Lheacuteritage est non complet un heacuteritage par la classe megravere serait une erreur Lheacuteritage par reacutefeacuterence est une mauvaise solution qui complexifie pour rien le modegravele

Nous pourrions deacutecider que est une cleacute candidate bien que la diagramme UML ne le preacutecise pasidentiteSecrete

La vue est optionnelle la classe megravere eacutetant abstraitevFigurine

vFigurine = Union ( Union (Projection(Personnagedesignationprix)

(Projection(Vehiculedesignationprix)) Projection(Repairedesignation

prix))

Remarque Heacuteritage

Remarque Cleacute candidate identiteSecrete

Remarque Vue vFigurine

etudiant (numchar(10) nomvarchar origine=gtdiplome) avec origine NOT NULL

uv (codechar(5) titrevarchar) avec titre KEY

note (etu=gtetudiant uv=gtuv semestrechar(5) resultatinteger)

Personnage (designationstring prixfloat identiteSecretestring genre

superheacutero supervilain mentor=gtPersonnage(designation))

Vehicule (designationstring prixfloat nbPlacesinteger typeterrestre

volant aquatique conducteur=gtPersonnage(designation)) WITH conducteur NOT NULL

Repaire (designationstring prixfloat emplacementGeographiquestring

capaciteinteger)

Membre (proprietaire=gtPersonnage(designation) nomtecircte bras gauche bras

droit torse jambe gauche jambe droite couleurstring)

Abrite (repaire=gtRepaire(designation) personnage=gtPersonnage(designation))

Contrainte PROJ(Personnagedesignation) IN PROJ(Membreproprietaire)

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Solutions des exercices

59Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 35gt Solution ndeg10

Exercice p 33gt Solution ndeg9

On aurait pu ajouter une classe abstraite ONL dont heacuteriterait Logiciel et Composant et qui factoriserait version et URL Linteacuterecirct principal serait de faire apparaicirctre la notion dONL

MCD UML

La notation des cleacutes avec nest pas standard en UML on preacutefeacuterera exprimer la contrainte de type cleacute en notant key

Remarque

Remarque

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Solutions des exercices

60Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg12

-

- - -

-

- -

Exercice p 37gt Solution ndeg11

Un projet est deacutefini par un numeacutero son nom sa date de deacutebut et sa date de finChaque projet est composeacute dune ou plusieurs tacircches et chaque tacircche est deacutefinie par son numeacutero son nom sa date de deacutebut et sa date de finUn projet a un chef de projet membre de lassociation qui peut participer agrave la reacutealisation dune ou plusieurs tacircchesUn membre est deacutefini par son preacutenom son nom et sa speacutecialiteacuteUn projet a une speacutecialiteacute bien deacutefinieLa reacutealisation dun projet se fait en collaboration avec un ou plusieurs partenaires chacun de ces partenaires a un rocircleUn partenaire est deacutefini par son nom et sa description

Modegravele UML gestion de projets

Exemple Exemple danalyse

Exemple de modeacutelisation UML et E-A

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Solutions des exercices

61Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Exercice p 37gt Solution ndeg13

Modegravele E-A gestion de projets

Le choix du preacutenom comme cleacute ici nest pas un bon choix en geacuteneacuteral

On preacutefeacuterera la notation key plutocirct que pour repeacuterer les cleacutes

1 Specialite (Intitulestring)2 Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))3 Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre(Prenom) Specialite=gtSpecialite(Intitule))

4 WITH ChefDeProjet Specialite NOT NULL5 Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)6 Partenaire (Nomstring Descriptionstring)7 Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet) Fonctionstring)

8 EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Remarque

Conseil

Exemple de scheacutema relationnel

Specialite (Intitulestring)

Membre (Prenomstring Nomstring Specialite=gtSpecialite(Intitule))

Projet (Numinteger Nomstring Debutdate Findate ChefDeProjet=gtMembre

(Prenom) Specialite=gtSpecialite(Intitule)) WITH ChefDeProjet Specialite NOT NULL

Tache (Numinteger Projet=gtProjet(Num) Nomstring Debutdate Findate)

Partenaire (Nomstring Descriptionstring)

Participe (Prenom=gtMembre(Prenom) Tache=gtTache(Num) Projet=gtTache(Projet)

Fonctionstring)EstAssocie (Nom=gtPartenaire(Nom) Projet=gtProjet(Num) Rolestring)

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Solutions des exercices

62Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

- -

La cleacute de est locale agrave la classe composant donc deux objets de cette classe avoir le mecircme num Tacircche peuvent En revanche deux objets de cette classe avec la mecircme cleacute eacutetrangegravere vers ne peuvent pas avoir le num Projet

mecircme car est une cleacutenum (num Projet)

En franccedilais

il peut exister deux tacircches numeacutero 1 dans deux projets diffeacuterentsil ne peut pas exister deux tacircches numeacutero 1 au sein du mecircme projet

Contraintes PROJ(Projet Num) IN PROJ(Tache Projet)

Fondamental

Compleacutement

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Glossaire

63Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Cleacute (key)

En UML et relationnel on parle de cleacute pour deacutesigner un groupe dattributs qui permet didentifier un objet

Cleacute alternative (alternate key)

En relationnel les cleacutes alternatives sont les cleacutes candidates non retenues comme cleacutes primaires

Cleacute artificielle (surrogate key)

En relationnel une cleacute artificielle est un attribut artificiel (qui ne repreacutesente aucune donneacutee) ajouteacute agrave la relation pour servir de cleacute primaire On mobilise cette technique lorsque lon na pas pu ou voulu choisir une cleacute naturelle pour cleacute primaire

Cleacute candidate (candidate key)

Cleacute candidate est un synonyme pour cleacute toutes les cleacutes sont candidates En fait on parle juste de cleacute au niveau conceptuel En relationnel on parle de cleacutes candidates pour diffeacuterencier les cleacutes alternatives (qui nont pas eacuteteacute retenues comme cleacute primaire) de la cleacute primaire (la cleacute candidate qui a eacuteteacute eacutelue pour effectuer les reacutefeacuterences par cleacute eacutetrangegravere)

Cleacute eacutetrangegravere (foreign key)

Une cleacute eacutetrangegravere est en relationnel un ensemble dattributs qui reacutefeacuterence les attributs de la cleacute primaire de la mecircme relation ou dune autre relation La cleacute eacutetrangegravere est plutocirct mal nommeacutee car ce nest pas une cleacute (elle nidentifie pas un objet) mais une reacutefeacuterence agrave une cleacute

Cleacute locale (local key)

Dans certaines constructions au niveau conceptuel (association NM et composition) la cleacute peut ecirctre locale cest agrave dire quau lieu didentifier pleinement un objet (comme une cleacute classique) elle identifie un objet eacutetant donneacute un contexte (les membres de lassociation NM ou lobjet composite)

Une cleacute locale nest donc pas une cleacute au sens relationnel elle ne permet pas didentifier un enregistrement mais elle deviendra une partie dune cleacute lors du passage au relationnel

Cleacute naturelle (natural key business key)

Cleacute naturelle est synonyme de cleacute au niveau conceptuel (toutes les cleacutes sont naturelles agrave ce stade) En relationnel les cleacutes naturelles sont toutes les cleacutes candidates non artificielles

Cleacute primaire (primary key)

Une cleacute primaire est une cleacute candidate qui a eacuteteacute choisie pour ecirctre reacutefeacuterenceacutee par les autres relations par le meacutecanisme des cleacutes eacutetrangegraveres

Glossaire

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Signification des abreacuteviations

64Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

BD Base de Donneacutees

E-A Entiteacute-Association

Abreacuteviations

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Bibliographie

65Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

ISBN 2-212-Roques Pascal Valleacutee Franck UML 2 en action De lanalyse des besoins agrave la conception J2EE11462-1 (3egraveme eacutedition) Paris 385 p architecte logicielEyrolles 2004

Pascal Roques 7e eacutedition Eyrolles 2009 [ISBN 978-2212125658]UML 2 par la pratique

Bibliographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie

Webographie

66Steacutephane Crozat (Contributions Benjamin Lussier Antoine Vincent)

Dia httplivegnomeorgDia

Morlon Jeacuterocircme UML en 5 eacutetapes httpdeveloppeurjournaldunetcomdossiersalg_umlshtml 2004

Borderie Xavier Cinq petits conseils pour un scheacutema UML efficace httpdeveloppeurjournaldunetcom tutorielcpt031013cpt_uml5conseilsshtml 2004

[2002-Objecteering software httpwwwobjecteeringcomseptembre]

UML en Franccedilais httpumlfreefr consulteacute en 2002

Webographie

  • Objectifs
  • Cours
    • Modeacutelisation avanceacutee des associations en UML
      • Exercice Entreprise
      • Composition
      • Agreacutegation
      • Explicitation des associations (sens de lecture et rocircle)
      • Associations reacuteflexives
      • Notion de cleacute locale dans les compositions et les associations NM
      • Classe dassociation avec cleacute locale
      • Associations ternaires
        • Passage UML-Relationnel Associations avanceacutees
          • Trousseau de cleacutes
          • Transformation des compositions
          • Transformation des agreacutegations
          • Transformation des classes dassociation avec cleacute locale
          • Correspondance entre UML et relationnel
          • Exercice
          • Exercice
            • Modeacutelisation avanceacutee des associations 11 en relationnel
              • Transformation des associations 11 (approche geacuteneacuterale)
              • Transformation des associations 1111
              • Transformation des associations 0111
              • Transformation des associations 0101
              • Exemple de choix pour une relation 11
                • Autres eacuteleacutements utiles en UML packages et steacutereacuteotypes
                  • Paquetages
                  • Steacutereacuteotype
                  • Eacutenumeacuteration steacutereacuteotype ltltenumerationgtgt
                  • Type utilisateurs steacutereacuteotype ltltdataTypegtgt
                    • Synthegravese sur la modalisation UML et relationnelle
                      • Quelques eacuteleacutements de stylistique UML
                      • Attention aux cleacutes artificielles
                      • Bibliographie commenteacutee sur la modeacutelisation UML
                      • Synthegravese Les diagrammes de modeacutelisation conceptuelle
                          • Exercices
                            • Exercice Lab III
                            • Exercice Eacutetudiants et UVs (introduction)
                            • Exercice Super-heacuteros relationnels I
                            • Exercice Objets Numeacuteriques Libres
                              • Devoirs
                                • Exercice Arbre de scegravene 3D
                                  • Compleacutement Exercices de modeacutelisation suppleacutementaire
                                    • Exercice Appartements agrave louer
                                    • Exercice Objectifs
                                      • Contenus annexes
                                      • Questions de synthegravese
                                      • Solutions des exercices
                                      • Glossaire
                                      • Abreacuteviations
                                      • Bibliographie
                                      • Webographie