Vous êtes sur la page 1sur 35

MSIS Chapitre 5

Patrons de
modélisation de
données

Jolita Ralyté | UniGe | CUI | jolita.ralyte@unige.ch


Qu’est-ce qu’un patron?
Un patron (« pattern ») désigne souvent un modèle, une structure, un
motif, un type, etc. réutilisable dans dans un contexte similaire.

C’est un instrument pour la réutilisation des meilleures pratiques, le transfert de


connaissances et l’apprentissage.

Un patron constitue une base de savoir et de savoir-faire pour


résoudre un problème récurrent dans un domaine. Il inclut :
§ l’identification d’une situation remarquable – situation typique dans le
domaine en question,
§ l’identification d’un problème récurrent à résoudre dans cette situation,
§ la caractérisation d’une bonne solution – un modèle à suivre ou imiter.

2
Patron de modélisation de données

Situation : une définition particulière d’un attribut, d’une classe, d’une


association ou d’une composition de ces éléments

Problème : un problème de traitement de données, de cohérence


d’information ou d’intégrité de données dans cette situation

Solution : un modèle générique qu’on peut imiter à chaque fois qu’on


rencontre le problème

3
Dans ce cours

Règle générale d’unicité d’une classe

Les patrons de

§ Normalisation des classes P1 P2 P3 P4 P5

§ Historisation P7 P8

§ Transformation des associations P6 P9 P10 P11 P12

4
Unicité d’une classe
Chaque concept ne doit être modélisé qu'une seule fois – n'apparaître
qu'une seule fois dans le diagramme des classes.

Il faut identifier et éliminer les synonymes et les homonymes.

La présence d’homonymes ou de synonymes provient de :


§ on a attribué le même nom à deux concepts sémantiques différents
à compléter ou changer le nom d’une ou plusieurs classes
§ on a modélisé deux fois le même objet sémantique
à éliminer une des classes et restructurer le diagramme
Unicité d’une classe
* Cafétéria
Exemple : gestion des lieux de restauration d’une
université 1
1 *
Cantine, Restaurant et Cafétéria représentent BâtimentUni Restaurant
les concepts ayant une sémantique similaire, 1
voire identique. * Cantine

Solutions

1. Fusionner les trois classes, si 2. Créer une spécialisation des classes si


aucune différence entre les chaque concept a des propriétés spécifiques.
trois concepts.
1 * RestaurantUni
BâtimentUni
1 *
BâtimentUni Restaurant

Cafétéria Restaurant Cantine


6
P1 Attribut composite
Classe A Situation : attribut composite d’une classe
Problème : la classe n’est pas en forme normale
attribut composite (a1 a2 a3 …)
Solution : trois cas ci-dessous

Opérations sur les La valeur de l’attribut Plusieurs


composants de peut être partagée par valeurs pour
l’attribut plusieurs objets l’attribut
Comme un attribut simple Non Oui Non
(de type Texte) (mais répétition)

Décomposition en plusieurs Oui Oui Non


attributs (mais répétition)

Création d’une nouvelle classe Oui Oui Oui

7
P1 Modélisation d’un attribut composite
Employé Questions à se poser :
numEmployé // Est-ce qu’il faudra rechercher les employés par ville ?
nom Est-ce qu’on veut connaitre plusieurs adresses pour un employé ?
prénom Est-ce qu’on veut garder la trace des changements d’adresse?
adresse (rue numéro ville code_postal)

0..N 0..N
Employé Employé Employé Adresse
numEmloyé // numEmloyé // numEmloyé // code_postal
nom nom nom rue //
prénom prénom prénom numéro
adresse : Texte rue ville
numéro
ville
code_postal

8
P1 Modélisation d’un attribut composite
numEmployé : Mot
Employé En langage relationnel nom : Texte
numEmployé // Employé (numEmployé // nom, prénom, adresse) prénom : Texte
nom
prénom adresse : Texte
adresse : Texte

Employé Employé (numEmployé // nom, prénom, rue, numéro, ville, code-postal)


numEmployé //
nom rue : Texte
prénom
numéro : Mot
rue
numéro ville : Texte
ville
code_postal code-postal : Mot
typeAdresse : Mot
0..N O..N
Employé Adresse
Employé (numEmployé // nom, prénom)
numEmployé // refAdr//
nom ville Adresse (refAdr / code-postal rue //numéro, ville)
prénom rue
numéro Employé-Adresse (numEmployé refAdr // typeAdresse)
code_postal
9
P2 Attribut multivalué
Situation : attribut multivalué d’une classe
Problème : la classe n’est pas en forme normale
Solution : création d’une nouvelle classe pour un attribut multivalué

Min 0 si la valeur AM peut être obscure

0..N / 1..N
Classe A Classe A Classe AM
1 / 1..N
A1 A1 AM
A2 A2
AM* attribut multivalué

Max N si un objet de AM peut être


partagé par plusieurs objets de A

10
P2 Modélisation d’un attribut multivalué
Exemple : tout employé peut posséder plusieurs numéros de téléphone (bureau, maison, mobile,…)

Questions à se poser :
Est-ce qu’un numéro peut être partagé par plusieurs employés ?
Est-ce qu’un numéro de téléphone peut exister sans être associé à au moins un employé?
1 1..N
Employé Téléphone
numEmployé // le numéro de num_téléphone //
Employé nom téléphone est typeTel
prénom individuel
numEmployé //
nom
prénom
(num_téléphone typeTel)* 1..N 1..N
Employé Téléphone
numEmployé // le numéro de num_téléphone //
nom téléphone typeTel
prénom peut-être
partagé
11
P2 Modélisation d’un attribut multivalué
Traduction en langage relationnel

1 1..N Employé (numEmployé // nom, prénom)


Employé Téléphone
numEmployé // num_téléphone // Téléphone (numTéléphone // numEmployé, typeTel)
nom typeTel
prénom

1..N 1..N Employé (numEmployé // nom, prénom)


Employé Téléphone
numEmployé //
Téléphone (numTéléphone // typeTel)
num_téléphone //
nom typeTel Tel-Empl (numEmployé numTéléphone //)
prénom

12
P3 Décomposition d’une classe
Situation :
§ plusieurs objets partagent les mêmes valeurs pour un ou plusieurs attributs de la
classe et/ou
§ un ou plusieurs attributs expriment un concept du monde réel représentable sous
forme d’une classe
Problème : redondance d’information
Solution : extraire ces attributs dans une (ou plusieurs) nouvelle(s) classe(s)

0..N 1/0..1
Classe A Classe A Classe MN
A1 A1 Am
A2 A2 An
Am valeurs partagées par
An plusieurs objets

13
P3 Décomposition d’une classe
Exemple : plusieurs cours ont le même enseignant.

Problème : répétitions de l’information concernant l’enseignant pour tous les cours


concernés.

Solution : extraire les attributs concernant l’enseignant dans une autre classe.

Cours 0..N 0..1


Cours Enseignant
codeCours //
titre codeCours // IDEnseignant //
crédits titre nom
nomEnseignant crédits prénom
prénomEnseignant email
emailEnseignant

14
P4 Décomposition d’une classe
Situation : il y a une dépendance fonctionnelle entre les attributs de la classe (nous
verrons le concept de dépendance fonctionnelle dans le cours de bases de données)

Problème : redondance d’information

Solution : extraire ces attributs dans une nouvelle classe

0..N 1/ 0..1
Classe A Classe A Classe MN
A1 A1 Am //
A2 A2 An
Am
An dépend de Am
An

15
P4 Décomposition d’une classe
Exemple : la consommation d’un véhicule dépend du modèle et non du
noImmatriculation.

Problème : répétitions de l’information concernant la consommation pour tous les


véhicules de même modèle.

Solution : extraire les attributs concernant le modèle dans une autre classe.

Véhicule 0..N 1
Véhicule ModèleVéhicule
noImmatriculation //
couleur noImmatriculation // nomModéle //
modèleVéhicule couleur consommation
consommation

16
P5 Valeur inexistante des attributs
Situation : une classe contient des attributs prenant la valeur « inexistante » en fonction
de la valeur des autres attributs

Problème : clarté de la sémantique des attributs

Solution : transformer la classe en une structure de généralisation/spécialisation

Classe A Classe A
Si les valeurs de A2 et A1 A1
A3 sont renseignées, A2
A3
alors Am et An ne
Am
peuvent pas avoir de An
valeurs et inversement
Classe A1 Classe A2
A2 A2
A3 A3

17
P5 Valeur inexistante des attributs
Exemple : une bibliothèque possède deux types d’ouvrage : livres et périodiques.
Les objets de type livre ne peuvent pas avoir de valeur des attributs ISSN et périodicité.
Les objets de type périodique ne peuvent pas avoir de valeur des attributs auteur, noEdition,
ISBN.
Solution : spécialiser la classe Ouvrage en Livres et Périodiques.

Ouvrage
Ouvrage
référence
référence titre
titre
type
auteur
noEdition
ISSN Livre Périodique
ISBN auteur
périodicité ISSN
noEdition périodicité
ISBN
18
P6 Association multivaluée (M..N)
Situation : Les deux rôles de l’association ont la cardinalité M..N.
Problèmes :
§ Ajout des attributs à l’association
§ Evolution du modèle – besoin de lier cette association à d’autres classes ou de la spécialiser
§ Garantie des règles d’intégrité (RI)
Solution : transformer l’association M-N en classe (d’association).

M..N M..N
Classe A Classe B

1 M..N M..N 1
Classe A Classe AB Classe B

CléA // CléA CléB //


CléB //
attributs 19
P6 Transformation d’une association M-N en
classe
Cas simple : Gestion des compétences des employés
On veut connaître les compétences des employés.
Les compétences sont génériques et partagées par plusieurs employés.

0..N qualifié pour > 0..N


Employé Compétence

Pour chaque compétence d’un employé on veut connaître son niveau (basique, moyen, avancé, expert).

1 0..N 0..N 1
Employé Qualification Compétence
niveau
Employé (idEmp //nom,…) Compétence (refComp //intitulé, …)

Qualification (idEmp refComp //niveau)


20
P6 Transformation d’une association M-N en
classe
Cas plus complexe : Gestion des commandes

Un client peut commander 0..N commander 0..N


plusieurs articles à la fois. Client Article

On veut connaître la date de commande et la quantité commandée pour chaque article.

1 0..N 0..N 1..N


Client Commande Article
dateCommande

1 0..N 1 1..N 0..N 1


Client Commande LigneCommande Article
dateCommande quantité

21
P7 Historisation des valeurs d’un attribut
Situation : la valeur d’un attribut est sujet au changement.
Problème : il est nécessaire de garder la trace de tous les changements de sa valeur.

Solution :
§ Extraire l’attribut concerné dans une nouvelle classe.
§ Ajouter un attribut de type date (ou autre type d’historisation, ex. numéro d’ordre).
§ L’attribut date fait partie de la clé de la nouvelle classe.

1 0..N
Classe A Classe A Classe A2
CléA // cléA // cléA
A1 A1 Date //
A2 attribut à historiser A2

22
P7 Historisation des valeurs d’un attribut
Exemple : Gestion des employés
On veut garder la trace des changements de salaire.

Sans historisation Avec historisation


on ne garde que le montant on garde tous les salaires de l’employé
du salaire en cours

1 0..N
Employé Employé Salaire
numEmployé // numEmployé // numEmployé
nom nom date //
prénom prénom montant
montantSalaire

Si le salaire change on La classe Salaire dépend existentiellement de la classe Employé.


ne saura plus quel était Le salaire reçu par un employé n’appartient qu’à cet employé.
le montant précédent.
23
P8 Historisation d’une association
Situation : l’association multivaluée a une
M..N M..N
sémantique temporelle Classe A Classe B
Cas particulier: un objet de la classe A peut être
associé au même objet de la classe B plusieurs fois
date
à des moments différents de son existence.
Problème : il est nécessaire de connaître la
dimension temporelle de chaque lien.

Solution :
§ Transformer l’association en une 1 M..N M..N 1
Classe A Classe AB Classe B
nouvelle classe.
cléA // cléA cléB //
§ Ajouter un attribut de type date cléB
dans la clé de la nouvelle classe. date //

24
P8 Historisation d’une association
Exemple : Responsables des cours 0..N 0..N
Cours Enseignant
Sans historisation
codeCours // idEnseignant //
On sait seulement qu’un enseignant est
titre nom
ou était responsable d’un cours mais on prénom
crédits
ne sait pas de quelle année s’agit-il. email

Avec historisation
On veut garder la trace de 1 0..N Responsable- 0..N 1
Cours Enseignant
quel enseignant était Cours
responsable de quel cours codeCours // idEnseignant //
idEnseignant nom
d’une année académique titre codeCours
crédits prénom
à l’autre. année // email

25
P9 Association (0..1)
Situation : Dépendance référentielle entre la classe A et la classe B permet
d’associer un objet de A à au plus d’un objet de B (cardinalité 0..1).

M..N 0..1
Classe A Classe B
Problèmes :
§ Cohérence d’information – si l’objet de B disparaît, l’objet de A ne peut plus être relié à
l’objet de B.
§ Evolution du modèle – changement des règles de gestion et des cardinalités est impossible.
§ Historisation de l’association est impossible.

Solution : Transformer 1 M..N M..N 1


l’association en classe avec Classe A Classe AB Classe B
des dépendances cléA // cléA cléB //
existentielles cléB
… //
26
P9 Transformation d’une association 0..1
Exemple : Gestion des patients
Un patient p1 est sous la responsabilité d’un seul spécialiste s1. Le patient à des
médicaments à prendre prescrits par son spécialiste.

0..1 0..N 1 0..N 0..N 1


Spécialiste Patient Prescription Médicament

1. Si le patient p1 change de spécialiste en s2, que deviennent les


prescriptions faites par s1? s2 les prend-il sous sa responsabilité?
2. Changement de règle de gestion: un patient peut maintenant avoir
plusieurs spécialistes responsables ! Comment faire ?

27
P9 Transformation d’une association 0..1

1 0..N 0..N 1
Spécialiste Patient Prescription Médicament
1 1
0..N 0..N
Responsable

On introduit la notion de spécialiste responsable qui peut faire des prescriptions.


Un patient peut maintenant changer de spécialiste ou même avoir plusieurs
spécialistes.

Mais quel spécialiste est responsable de quelle prescription ?

28
P9 Transformation d’une association 0..1

0..N 1
Spécialiste Patient Prescription Médicament
1 1 0..N
0..N 0..N
Responsable
1

Ce modèle permet de faire l’historique des prescriptions associées à un patient.


On sait maintenant quel spécialiste a fait quelle prescription.

29
P10 Inclusion sémantique des associations
* *
Situation : Classe A Ì Classe B

§ Il existe deux (ou plus) associations ou * *


classes d’association entre deux classes. * *
Classe AB1
§ La sémantique d’une association est 1 1
incluse dans la sémantique d’une autre Classe A Ì Classe B
association. 1 * 1
Classe AB2 *
Problème : validation des règles d’intégrité –
validation de la condition d’inclusion.
Tout objet de la classe AB2 doit correspondre
à au moins un objet de la classe AB1. 1 * * 1
Classe A Classe AB1 Classe B
Solution : spécialisation de la classe
d’association.
Classe AB2

30
P10 Inclusion sémantique des associations
Exemple : Gestion des diplômes * *
Inscription
1 1
Une personne s’inscrit à un diplôme. Elle réussit le
diplôme si elle satisfait aux exigences de celui-ci. Personne Ì Diplôme
Une personne ne peut réussir un diplôme que si elle y 1 * 1
Réussite *
est inscrite.
Au moment de la création d’un objet de Réussite ou
suppression d’un objet d’Inscription il faut vérifier
cette règle d’intégrité.

1 * * 1
Spécialisation de la classe Inscription en une Classe A Inscription Classe B
nouvelle classe Réussite.
Maintenant on ne peut créer un objet de Réussite
seulement s’il existe un objet d’Inscription
correspondant.
Réussite

31
P11
Interdépendance sémantique des
associations
* *
Situation : Classe A ≈ Classe B
§ Il existe deux (ou plus) associations ou * *
classes d’association entre deux classes.
* *
Classe AB1
§ La sémantique des associations est 1 1
proche – une partie peut être commune Classe A Classe B

(attributs communs dans les classes AB1
1 1
et AB2). * Classe AB2 *

Problème : Création des liens communs


avec d’autres classes.

Solution : Généralisation des deux classes 1 * * 1


d’association en une nouvelle classe plus Classe A Classe AB Classe B
générique.

Classe AB1 Classe AB2


32
P11
Interdépendance sémantique des
associations
Exemple : Gestion des projets * *
Concepteur
Une personne travaille sur un projet en tant que 1 1
concepteur et une autre en tant que développeur. Personne ≈ Projet
La même personne peut-elle être à la fois concepteur 1 1
*
et développeur sur le même projet ? Développeur *
On veut connaître le temps de travail par personne et
par projet.

Introduction de la classe Membre (de projet),


générique aux classes Concepteur et Développeur. 1 * * 1
Personne Membre Projet
Maintenant chaque personne peut participer au projet
en tant que concepteur et/ou développeur. tempsTravail
On peut enregistrer le temps de travail de chaque
personne par projet.
On peut aussi compléter la spécialisation avec
d’autres rôles de membres de projet.
Concepteur Développeur Testeur
33
P12 Association redondante
Situation : une association est sémantiquement redondante avec d’autres associations,
notamment par transitivité
Problème : redondance d’information

Solution : éliminer l’association redondante

Attention : avant d’éliminer il faut vérifier la sémantique et les cardinalités de


l’association à éliminer

Classe A Classe B Classe C

34
P12 Association redondante
Exemple : on retrouve les éditeurs 1 1..N 1..N 1
Auteur Livre Editeur
chez qui un auteur a publié par
transitivité via la classe Livre. 1..N 1..N
Publication
L’association Publication est
redondante.

Contre-exemple : L’association Habitation n’est pas redondante, elle ne peut pas


être supprimée.

1..N Emploi 1 1..N Localisation 1


Personne Entreprise Ville
1..N 1
Habitation

35

Vous aimerez peut-être aussi