Académique Documents
Professionnel Documents
Culture Documents
Patrons de
modélisation de
données
2
Patron de modélisation de données
3
Dans ce cours
Les patrons de
§ Historisation P7 P8
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.
Solutions
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
0..N / 1..N
Classe A Classe A Classe AM
1 / 1..N
A1 A1 AM
A2 A2
AM* attribut multivalué
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
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.
Solution : extraire les attributs concernant l’enseignant dans une autre classe.
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)
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.
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
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
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é, …)
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.
1 0..N
Employé Employé Salaire
numEmployé // numEmployé // numEmployé
nom nom date //
prénom prénom montant
montantSalaire
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.
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
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
29
P10 Inclusion sémantique des associations
* *
Situation : Classe A Ì Classe B
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 *
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.
35