Relations
Relations
extensions au
modèle Merise
Les concepts et les modes de représentation des données de
Merise ont été "étendus" au cours du temps. Ces extensions sont
relativement peu connues; elles font peur car on pense souvent
qu'elles alourdissent les schémas de données. Or, elles ne font le
plus souvent que rendre ceux-ci plus simples et plus lisibles. Voici
quelques unes des notions de Merise étendue, présenté sur
l'exemple célèbre (et fort usité !) du village gaulois.
13
Ne disposant pas d'identifiant naturel pour les batailles
(le nom du camp ne suffit pas puisqu'il peut y avoir
différentes batailles successives contre les camps; la
date de bataille ne suffit pas non plus puisqu'il peut y
avoir plusieurs batailles le même jour et même contre
un seul et même camp), on ne peut pas créer d'entité
Bataille. On place donc la donnée Durée de la bataille
sur une association dénommée Bataille faisant
intervenir les entités Camp_romain et Date. Dans
l'entité Date, il faut une heure, pour identifier
parfaitement les différentes batailles d'un même jour.
Ainsi, une bataille est identifiée par un nom de camp,
ainsi qu'une date et une heure, ce qui donne un
identifiant lourd et peu pratique et ce qui diminue la
lisibilité du modèle.
En "Merise étendu", on peut considérer que Bataille est
une entité faible de l'entité forte Camp-romain. On
entend par là que l'identifiant de Bataille est composé
de l'identifiant de Camp-romain, suivi d'un numéro de
rang. Par exemple, on aura les batailles "C1 01",
"C102" etc.
Sur le schéma, ce concept est matérialisé par des
parenthèses autour de la cardinalité de l'arc d'association
qui part de l'entité faible Bataille.
14
Dans Bataille, le numéro de rang est un identifiant
relatif. Il n'a de sens qu'associé à l'identifiant de l'entité
forte Camp_romain.
Camp_romain Bataille
nom du camp romain
contre
(1,1) numéro_rang
nombre de légionnaires 0,n
durée de la bataille
nom du chef du camp date de la bataille
EXERCICE
Dans l’entreprise X, les factures relatives à un
chantier sont identifiés par le numéro du chantier et
par un numéro d’ordre séquentiel (1,2 , 3, …).
Exemple :
N°Chantier N°Facture
Le numéro de facture
001 1 recommence à 1 à chaque
001 2 changement de chantier.
001 3
002 1
15
003 1
Solution 2
1,n 1,1
CHANTIER FACTURE
N° Chantier FIGURER N°Chantier+N°Facture
AdrChantier DateFacture
NomChef
16
Les parenthèses entourant les cardinalités 1,1
indiquent que N° Facture est un identifiant relatif.
17
Habitant Fonction
nom
Exerce
Nom_fonction
nombre_de_décorations
1,1 0,n âge_mini
date_naissance âge_maxi
adresse
0,n
Camp_romain participation
nom du camp romain nombre_de_casques
nombre de légionnaires
nom du chef du camp
0,n 1,n
contre Bataille
numéro_rang
(1,1) durée de la bataille
date de la bataille
18
Habitant Fonction
Exerce
nom Nom_fonction
date_naissance 1,1 0,n âge_mini
adresse âge_maxi
Guerrier participation
nombre_décorations 0,n nombre_de_casques
1,n
Bataille
numéro_rang
durée de la bataille
date de la bataille
EXERCICE
Situation : Dans l’entreprise X, les factures font l’objet
d’un règlement par chèque bancaire ou par carte bleue.
Un règlement est caractérisé par un numéro séquentiel
(attribuée par l’ordinateur) et une date.
Pour les règlements par chèque, on souhaite mémoriser
le nom de la banque et le numéro de chèque.
19
Pour les règlements par carte bancaire, on souhaite conserver :
le numéro de carte, le nom de la banque et la date d’expiration
de la carte.
Ici on a une entité générique : REGLEMENT et deux entités
spécialisées : CHEQUE et CARTE. On dit aussi que CARTE
et CHEQUE sont deux sous-types de l’entité REGLEMENT
car elles n’ont pas d’identifiants propres.
La généralisation/spécialisation permet
de mettre en évidence les propriétés
spécifiques de chaque sous-type
d’entités.
1) Représentation dans le MCD :
1,1
1,n REGLEMENT
FACTURE N°Reglement
N°Facture PORTER SUR
DateRèglement
DateFacture NomBanque
Attention
un sous-type
d’entités ne
comporte pas CHEQUE CARTE
d’identifiants. Les N° Chèque N°Carte
DateExpiration
sous types héritent
de l’identifiant de
l’entité générique
20
a) Une seule relation
Les propriétés des entités spécialisées sont regroupées
dans les entités spécialisées et on crée un attribut
permettant de différencier l’occurrence
Exemple :
REGLEMENT(N°Reglement, DateRèglement, NomBanque,TypeReglement N°
Chèque, N°Carte, DateExpiration) Attribut ajouté
21
Cette solution permet de faire
l’économie d’une relation. En
revanche, elle entraîne
redondance car les propriétés de
l’entité générique sont reprises
V/ Généralisation/spécialisation des associations
Situation :
Une entreprise fabrique des objets artisanaux qui peuvent
être standard ou personnalisé. Chaque produit est identifié
par un numéro et un prix d’achat. Les produits
personnalisés comportent par ailleurs un taux horaire
variable correspondant au travail de personnalisation.
Une commande est caractérisé par un N° de commande et
une date.
Les quantités de produit commandés concernent les deux
types de produits. Pour les produits personnalisés, il faut
également facturer la durée d’internvention.
Complétez le MCD suivant :
PRODUIT
CodeProduit
LibelléProduit
PrixUnitaire
22
PRODUIT_STANDARD PRODUIT_PERSONNALISE
Taux_horaire
1,n 1,n
FACTURER_PP
FACTURER_PS
Duree
Concerner
QtesComm
1,n
COMMANDE
N°Commande
DateCommande
IV Associations d'associations
23
E1 R E2
E1 R E2 1
1
E1 E1
R E3 R
E3
2 R
2
E2 1
E2
Zones
code_zone
0,n
Espèces_poisson
nom_espèce est-autorisé_à_pécher
0,n
prix_au_kilo
mer_ou_riviere
1,n
Pêcheur
numéro_bateau
24
PB : Ce schéma n'exprime pas la règle de gestion qui dit que
dans une zone, il n'y a qu'un seul pêcheur autorisé à pêcher une
espèce donnée.
Normalement un pecheur est autorisé a pêcher (une espéce dans
une zone)
Merise étendue autorise les "associations d'associations", dont voici
un exemple de formalisme parmi ceux qui existent.
Zones
Pécher
Espèces_poisson code_zone
nom_espèce 0,n 0,n
prix_au_kilo
0,1
mer_ou_riviere
Est_autorisé
1,n
Pêcheur
numéro_bateau
25
REGION
N° Region
LibRegion
Questions :
2) D’après les règles de gestion de l’énoncé, est-il possible
que le représentant 3 vende le produit 2 ds la région 5 ?
CONCLUSION :
Le MCD actuel ne traduit pas correctement la réalité, il faut recourir à la structure
« agrégation » qui permet d’associer une entité à un couple d’entités:
26
REPRESENTANT
N° Rep
NomRep
1,n
VENDRE
1,1
MLD relationnel :
REPRESENTANT(N°Rep, NomRep)
REGION(N°Region, LibRegion)
PRODUIT(N°Produit, LibelleProduit, PrixProduit)
COUVRIR(#N°Region,#N°Produit, #N°Rep)
REPRESENTANT
N° Rep
NomRep
1,n
VENDRE
0,n
27
COUVRIR(#N°Region,#N°Produit)
VENDRE(#N°Rep, #N°Region,#N°Produit)
Menhir
numéro_menhir
carrière_menhir
hauteur_menhir
1,1 poids_menhir
0,1
0,n 0,n
Habitant
nom
date_naissance
adresse
Sur ce schéma, rien n'indique par exemple que ceux qui achètent des
menhirs ne sont pas ceux qui les taillent.
28
taillé_par et acheté_par, exprimant la règle de gestion qui dit que les
tailleur de menhirs ne peuvent en être les acquéreurs. Il existe
d'autres types de représentation de contraintes entre les associations,
dont notamment les contraintes d'inclusion ou d'égalité.
Menhir
numéro_menhir
carrière_menhir
hauteur_menhir
1,1 poids_menhir
0,1
0,n 0,n
Habitant
nom
date_naissance
adresse
Note : dans AMC Designor ces contraintes n'apparaissent pas à la génération du modèle
physique, bien qu'elles puissent être exprimées dans certains SGBD, sous la forme de
"triggers", ordres SQL spécifiques spécifiant des liens particuliers entre les données.
29
30
1-Comment modéliser les notions de temps (date, heure)
La modélisation du temps peut intervenir de trois manières.
1 - Des propriétés (ou attributs) temporelles
Il s’agit d’informations (modélisées comme des propriétés rattachées à des
entités ou des relations) qui prennent leurs valeurs sur le domaine « temps ».
Ces propriétés peuvent souvent se nommer date de…, ,mois de…, année de ..
Ainsi date de commande, date de naissance, date de survenance, …. sont
certainement des propriétés des entités Commande, Personne, Sinistre. De
telles propriétés peuvent également être affectées à des relations, au même
titre et selon les mêmes règles que toute autre propriété.
L’unité de temps modélisée comme une entité peut être un Jour, une Semaine,
un Mois ou toute autre période de temps à délimiter (par son identification).
3-L’historisation Cette notion permet de modéliser, de façon concise au niveau
conceptuel, le fait que l’on souhaite conserver les valeurs antérieures prises
par une propriété, pour une occurrence d’une entité (ou d’une relation). Il
existe ainsi, la valeur actuelle de la propriété et les valeurs antérieures.
Par exemple, pour une entité Contrat, on a une propriété bonus.
Conformément aux règles de modélisation, le bonus accueille la valeur
actuelle. L’historisation du bonus indique que l’on conservera également les
valeurs antérieures du bonus pour tout contrat.
Cette historisation se note, au niveau conceptuel par un (H) au niveau de la
propriété concernée. On peut en plus préciser :
31
la datation, c’est à dire l’instant auquel la valeur a été remplacée par
une valeur plus récente (heure-jour, jour, mois, année),
Exemple :
l'entité M est liée dans un premier cas à l'entité A (si la valeur de l'attribut x
est 1), sinon à B (si la valeur de x est 2) .
Alors on choisira une contrainte en X car les valeurs 1 et 2 sont (a priori)
mutuellement exclusives, ou XT s'il n'y a que ces deux valeurs possibles.
Préciser ensuite l'affectation à l'une ou l'autre par une règle.
Par ailleurs, dans ce cas, les cardinalités mini des "pattes" des relations
concernées devraient être à 0; peu importe les maxis.
32
Les contraintes de stabilité indiquent des limitations sur les possibilités d'évolution du
système modélisé. Elles portent sur :
Propriété stable: Les valeurs de cette propriété n'évoluent pas dans le temps;
on peut dire qu'elles ne sont pas modifiables (sauf correction d'erreur). Sur les
diagrammes, elle est notée (S) sur la propriété. Par définition, tout identifiant
est stable. Il n'existe pas (lacune?) de notation indiquant que l'ensemble des
propriétés de l'entité est stable.
Dans l'exemple, on considère que nom de Client et date de commande sont
stables.
33
La notion de relation dite « réflexive » intervient lorsqu’une même entité est
impliquée plusieurs fois dans une relation (plusieurs « pattes » sur la même
entité).
Dans une relation binaire, la relation semble boucler sur elle-même, d’où le
nom de réflexive ; mais on peut rencontrer cette situation dans les relations
ternaires et plus.
Une relation binaire « réflexive » exprime par exemple :
un Contrat est l’avenant d’un Contrat précédent
34
Ici, le Dossier est identifié par sigle service + nom + prénom + date de naissance.
Dossier n’a pas d’identifiant « propre » et pourtant ce n’est pas une relation !
L’entité Dossier participera naturellement à des relations, comme toute autre entité.
Bien sûr, on trouvera toujours un informaticien pour imposer un n° de dossier ignoré de tous,
confondant ainsi le niveau conceptuel et le niveau logique.
Attention : Il s’agit de la modélisation conceptuelle qui sera ensuite traduite en logique
relationnel avec la redondance due aux clés étrangères.
35
3/ Recourir à la métamodélisation, c'est à dire modéliser les propriétés
en tant qu'occurrences d'entités types
36
- un Candidat compose une Matière dans une Salle ,
- pour une Matière, un Candidat ne compose que
dans une Salle (CIF)
Pourtant une Matière peut être composée par
plusieurs Candidats et dans plusieurs Salles (1,n)
une Salle peut être le lieu de composition de
plusieurs Candidats et plusieurs Matières (1,n)
un Candidat peut composer dans plusieurs Matières
et plusieurs Salles (1,n).
MCD :
Attention, ce sont les pattes de la relation qui portent les cardinalités et non celles de CIF. De
plus la CIF doit être relié à la relation à laquelle la CIF s'applique
Exemple : Une personne est soit un contact soit un utilisateur. L'entité "mère"
est PERSONNE. Les entités CONTACT et UTILISATEUR héritent de PERSONNE.
Ils existent trois types d'héritages possibles à choisir selon les contraintes de
37
son projet.
Toute méthode, à l’instar des êtres vivants, évolue. Elle est soumise à une double influence,
exogène (celle des autres méthodes) et endogène (celle de ses propres utilisateurs). Merise
n’échappe pas à cette règle :
38
Etendre pour étendre, ça n’a pas de sens. L’extension coûte. Il faut changer les logiciels,
changer les dossiers, changer les habitudes...
Toute extension doit donc apporter un plus aux utilisateurs de la méthode (les maîtres
d’œuvre), les utilisateurs du logiciel (les maîtres d’ouvrage) y retrouvant leur compte en
récupérant des spécifications plus précises, des erreurs évitées … donc un outil mieux fini.
Il y a eu plusieurs extensions à Merise 0, certaines majeures, d’autres mineures. Toutes ne
sont pas utilisées partout. Il convient donc de s’assurer du public à qui sont destinés les
schémas avant de les employer.
expression des contraintes
héritage et agrégation
personnalisation d’associations
association d’associations,
Les schémas de données, pour bien construits qu’ils soient, ont un défaut majeur : ils
autorisent l’entrée de données aberrantes, erronées, ou, plus exactement, ils n’attirent pas
l’attention du concepteur sur un certain nombre de contrôles à effectuer lors de la mise à jour
de ces données.
Certes, on peut définir ces contrôles dans le dossier. Il est cependant préférable de les faire
figurer directement
La seconde catégorie de contraintes que l’on doit exprimer sur un schéma regroupe ce que
l’on appelle des contraintes procédurales. Il s’agit de noter l’existence de procédures vérifiées
par plusieurs occurrences et/ou par des valeurs prises par des occurrences les unes par rapport
aux autres.
ex : la somme des achats simultanés d’une personne ne peut être inférieure à 50 euros.
Ensembles de valeurs d’occurrences
COMPLEMENTS : QQ PARTICULARITES SUR
LE PASSAGE AU MODÈLE RELATIONNEL1
I – REGLES DE BASE
Pour obtenir un modèle relationnel à partir du MEA, il faut appliquer les règles suivantes :
les pseudo-entités (attribut spatio-temporel), n'apparaissent plus dans le modèle relationnel (DATE par
exemple)
les entités deviennent des relations dont la clef primaire de la relation est l'identifiant de l'entité.
les associations deviennent des relations dont la clef primaire est la concaténation des n identifiants des
entités concourant à la définition de l'association
une CIF (lien1,1 entre 2 entités) se traduit par la migration en clef étrangère dans la relation source de
l'identifiant cible du lien d'appartenance
un lien de type (0,1) et (1,n) se traduit par une association entre les entités impliquées.
1
APIEP janvier 99(D’après Ch. Gaubert-Macon, MC. Moreau et D. Weinling )
39
Dans la plupart des ateliers de génies logiciels (AMC,
Windesign ) le type de lien 0,1 est traduit par une
migration de clef avec une clef étrangère pouvant avoir
une valeur nulle.
SECTEUR REGION
Rel_1
N°secteur (R) 1,1 1,n N°région
Dans le cas d'une entité ayant un identifiant relatif, celle-ci devient une relation dont la clef primaire est
composée de l'identifiant de l'entité but du lien d’appartenance et de l'identifiant relatif
SECTEUR REGION
PK_SECTEUR PK_REGION
N°RÉGION N°RÉGION
Rel_1
N°SECTEUR
40
Liens vers des associations spécifiques.
Etudiant Enseignant
niveau grade
41
spécifiques, et sous forme de vues les objets du MEA
n’ayant pas ou peu de propriétés spécifiques.
Chaque entité est traduite par une relation. Toutes les relations ont la même clef primaire
qui correspond à l’identifiant de l’entité générique.
Ceci permet de traduire correctement le modèle de données mais ce mode de traduction entraîne la
multiplication des tables qui induit des contraintes de mise à jour, notamment lors de l’ajout de n-uplets.
L’emploi de ce type de traduction est adapté pour un schéma avec une contrainte d’exclusion entre sous-
types.
1ère solution :En réalisant dynamiquement une jointure sur la clef primaire.
Les tables correspondant au sur-type et aux sous-types sont générées, chacune ayant pour
origine l'identifiant du sur type en tant que clé primaire.
42
PERSONNE
PK_PERSONNE
N°PERSONNE
NOM
DATENAISS
Her_1 Her_1
ETUDIANT ENSEIGNANT
PK_ETUDIANT PK_ENSEIGNANT
N°PERSONNE N°PERSONNE
NIVEAU GRADE
Ainsi pour obtenir le nom d’un étudiant, il faudra réaliser une jointure sur le N°personne entre les
tables étudiant et personne.
Remarque : Pour les tables ayant pour origine les sous types, la clé primaire est composée de la clé
étrangère ayant pour référence la table ayant pour origine le sur-type.
43
2ème solution : En répétant dans les relations de sous-type les attributs de l’entité générique
Dans ce cas toutes les propriétés du sur-type sont dupliquées complètement dans chaque sous-type. Cette
option aura pour effet de dupliquer tous les attributs de la table mère dans les tables filles.
PERSONNE
PK_PERSONNE
N°PERSONNE
NOM
DATENAISS
Her_1 Her_1
ETUDIANT ENSEIGNANT
PK_ETUDIANT PK_ENSEIGNANT
N°PERSONNE N°PERSONNE
NIVEAU GRADE
NOM NOM
DATENAISS DATENAISS
Ceci a l’avantage de générer moins de relations et donc d’obtenir moins de contraintes lors des mises à
jour.
En revanche ce type de représentation n’est valable que si il y a une contrainte de partition ou totalité entre
les entités spécialisées.
L’exclusion permettant que certaines entités génériques ne soient pas représentées par les sous types
n’admet pas cette possibilité.
44
3.2.3- Traduction de l’entité générique seulement
L’entité générique devient une relation porteuse des attributs génériques et de l’ensemble des attributs de
spécialisation.
Pour certains n-uplets, des attributs auront un sens, pour d’autres pas, et ce en fonction du sous-types
d’appartenance : c’est le phénomène d’expropriation de propriété, qui oblige au niveau de la table
générique d’autoriser la valeur nulle pour certains attributs.
PERSONNE
Ex : select nom,datenaiss,niveau
PK_PERSONNE From personne
N°PERSONNE Where niveau <> 0 ;
NOM
DATENAISS
permet d’obtenir les étudiants.
NIVEAU
GRADE
Un trigger ou déclencheur est un programme défini par le programmeur qui s’exécute lors
d’un événement survenant sur une table d’une base de données. Un trigger est associé à
une seule table.
L’événement est lié à une demande de mise à jour sur la table (ajout d’un n-uplet, modification ou
suppression).
45
CLIENTS
N°CLIENT
nom
adresse
XT
CLIENT_PROSPECT
CLIENT_PORTEFEUILLE
code prospection
Supposons que le modèle relationnel représentant ce MEA soit déduit des règles : on ne garde que les
entités spécialisées.
RETURN;
END IF;
END;
/
46
En effet la représentation du modèle entité association
indique une partition entre les sous-type
CLIENT_PROSPECT et CLIENT_PORTEFEUILLE
un client ne peut donc appartenir aux deux sous-types.
47
48