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/
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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