Modélisation Entité/Association (ER)
2025-11-07
Pour construire/concevoir des bases de données utiles, il n’est pas facile d’utiliser immédiatement le Langage de Définition de Données (partie de SQL)
Il est plus raisonnable de s’appuyer sur
Depuis les temps originels des Bases de Données, on a multiplié les formalismes, les méthodes de conception
Les différents formalismes sont presque toujours des variations autour du modèle dit Entité-Association proposé par Chen en 1976
Peter Chen, the father of ER modeling écrivait dans le texte fondateur:
The entity-relationship model adopts the more natural view that the real world consists of entities and relationships. It incorporates some of the important semantic information about the real world.
Dans l’article de 1976, Chen distingue explicitement les diagrammes entité–associations des techniques de modélisation par record:
The data structure diagram is a representation of the organization of records and is not an exact representation of entities and relationships.
Définition
Dans la modélisation EA, on repère d’abord les ensembles d’objets (concrets ou abstraits) répondant à un même prototype, c’est-à-dire ayant des propriétés communes. Ils sont nommés entités.
Représentation
Dans les diagrammes EA, les entités sont représentées par des rectangles. Le nom de l’entité est inscrit au centre du rectangle.
worldPour la constitution de la base de données de géographie politique world, la modélisation choisirait les entités :
country: les pays/territoirescity: les villes de population urbaine supérieure à un seuil donné lors de la constitution de la baselanguage: les langues parlées lors de la constitution de la basenycflights)Pour la modélisation du traffic aérien civil aux États-Unis, on peut considérer les entités suivantes
airports: les aéroports (civils, sur le sol des États-Unis)airlines: les compagnies aériennesplanes : les avions (aéronefs)Les entités sont généralement associées à des noms (substantifs). Une entité est en effet une collection d’objets apparentés (avec des propriétés communes).
Note
Tout ensemble d’objets n’est pas nécessairement considéré comme une entité.
C’est la décision de l’équipe de modélisation qui constitue les entités.
Définition
Une instance ou occurence est un élément d’une entité.
Dans word, le pays Luxemburg est une instance de country.
Les instances d’une entité sont discernables (pas d’éléments dupliqués).
Note
Le jargon de la modélisation EA renomme des notions déjà présentes dans la théorie des ensembles utilisée en Mathématiques.
Définition
Après avoir choisi les entités, on recherche les propriétés qui les caractérisent. Elles sont nommées attributs.
Dans world, l’attribut name envoie country vers l’ensemble des chaînes de caractères. Dans l’égalité name(Luxemburg) = "Luxemburg", à gauche Luxemburg désigne le pays, à droite, "Luxemburg" est une chaîne de caractères.
L’attribut population envoie country vers les entiers (positifs).
Représentation
Dans les diagrammes EA, on peut utiliser deux styles de représentation :
Définition
Pour une entité, un identifiant est un attribut qui identifie de manière unique chaque instance.
Règle
Il faut définir ou créer un identifiant pour chaque entité.
Représentation
Dans un schéma EA, on représente un identifiant comme un attribut dont on souligne le nom.
Dans le style 2, on le souligne et on le place en tête de liste.
L’identifiant d’une entité n’est pas le nom de l’entité (contrairement à la terminologie des langages de programmation).
La norme ISO-3166 associe à chaque pays un code en deux lettres (alpha-2). Pour le Luxemburg, il s’agit de LU
La norme ISO-3166 associe à chaque pays un code en trois lettres (alpha-3). Pour le Luxemburg, il s’agit de LUX
Note
On distingue les identifiants en les soulignant et en les plaçant en tête.
Définition
L’étape suivante de la modélisation consiste à étudier comment sont associées les entités. On définit des associations entre les entités.
association entre les entités \(E_1,E_2, \ldots, E_k\) (modèle EA)
\(\longleftrightarrow\) relation sur les ensembles \(E_1,E_2, \ldots, E_k\), c.a.d partie de \(E_1 \times E_2 \times \ldots \times E_k\) (théorie des ensembles).
On dit que les entités \(E_1,E_2, \ldots, E_k\) participent à l’association \(A\).
On parle d’instance ou d’occurence à propos d’un élément d’une association.
Une instance d’association donne des instances d’entités associées.
Note
Le nom d’une association reflète (en principe) la signification de cette association. Il renvoie souvent à un verbe, pas forcémment d’action.
Une association peut posséder des attributs qui sont des fonctions de l’association vers un domaine/type.
Exemple
Dans world, l’association is-spoken-in peut être munie
official qui précise si une langue donnée est officielle dans un territoire donné,percentage qui précise le poucentage de la population qui parle cette langue dans un territoire donné.Dans un diagramme EA, deux styles de représentation :
style 1 : une association est représentée par un losange. Le nom de l’association est inscrit au centre du losange.
style 2 : une association est représentée par un rectangle aux coins nettement arrondis. Le nom de l’association est inscrit en haut, séparé des noms d’attributs par un trait horizontal.
L’association est reliée aux entités participantes par des arêtes.
Les attributs d’association sont représentés comme les attributs d’entité selon le style choisi.
Avertissement
Il n’est pas toujours évident de lire sur le graphique le rôle joué par les différentes entités participantes dans une association. Bien nommer aide.
Une même entité peut participer plusieurs fois à une même association.
On distingue ces participations grâce à des rôles qui étiquettent les arêtes qui relient le rectangle entité au losange association.
Dans une base de donnée généalogique, on part d’une entité individu. On définit une auto-association est-mère-de qui relie l’entité individu avec elle-même.
Cette auto-association n’est pas symétrique: quand on écrit qu’Elizabeth est-mère-de Charles, Elisabeth et Charles ne jouent pas le même rôle.
Dans une instance \((x,y)\) de l’association est-mère-de, \(x\) joue le rôle de la mère, \(y\) de l’enfant.
On peut rendre compte de ces rôles en marquant les arêtes qui lient l’entité individu à l’association est-mère-de.
Définition
L’arité d’une association est le nombre d’entités participantes.
Note
Dans le modèle world, nous n’avons (pour le moment) que des associations d’arité 2, c’est-à-dire des associations binaires.
Pour construire un modèle des vols aériens (comme dans nycflights13), on définit des entités airline plane, airport et une association quaternaire flight.
L’association flight est quaternaire: une instance de flight associe un aéroport d’origine à un aéroport de destination (2 arêtes entre airport et flight), elle associe aussi une instance de plane et une instance de airline.
On distingue les deux participations de airport à flight par des rôles.
Dans une association entre plusieurs entités, les instances d’une entité peuvent participer a priori à 0, 1, ou un nombre illimité de fois aux instances de l’association.
Pour traduire les associations dans le langage des tables et des contraintes (LDD), il est très utile d’encadrer le plus précisément possible le nombre de participations d’une instance d’une entité aux instances d’une associations.
Définition
On appelle cardinalités de l’association \(A\) pour l’entité \(E\) le couple \((n_{min},n_{max})\) noté \(n_{min} \text{:} n_{max}\) où :
On évalue en général les cardinalités par 0, 1 ou “plusieurs” noté \(n\).
Note
Les cardinalités sont notées sur les arêtes qui relient entités et associations.
1:1 dans le modèle worldcity apparaît 1 et 1 seule fois dans l’association is-in. On dira que is-in est de cardinalité 1:1 du côté de city. Une ville se situe sur le territoire d’un pays (et d’un seul).0:n dans le modèle worldcountry peut apparaître une nombre arbitraire de fois dans l’association ‘is-in’. On dira que is-in est de cardinalité 0:n du côté de country. Un territoire peut ne comporter aucune ville de population supérieure à un seuil. Il n’y a pas de borne a priori sur le nombre de grandes villes situées sur un territoire.language peut apparaître une nombre arbitraire de fois dans l’association is-spoken-in. On dira que is-spoken-in est de cardinalité 0:n du côté de language.country peut apparaître une nombre arbitraire de fois dans l’association ‘is-spoken-in’. On dira que is-spoken-in est de cardinalité 0:n du côté de country.world)nycflights13)Les cardinalités du MCD des vols.
Définition
Si les instances d’une entité \(E\) ne sont identifiables que par rapport aux instances d’une autre entité \(F\), on dit que \(E\) est une entité faible associée à l’entité forte \(F\).
Identifiant d’entité faible
L’association faible entre l’entité faible \(E\) et l’entité forte de référence est identifiante.
L’identifiant de l’entité faible \(E\) est construit en accord avec l’association faible identifiante par concaténation de l’identifiant de \(F\) et d’un identifiant relatif qui distingue les différentes instances de \(E\) associées à la même instance de \(F\).
Définition
L’association qui lie l’entité faible \(E\) à son entité de référence \(F\) est dite faible.
En effet, les instances de l’association sont déjà donné par l’identifiant de l’entité faible.
Cardinalités des associations faibles
Une association faible a pour cardinalités :
Dans le système d’information de l’université Paris-Cité, si on considère les salles et les bâtiments :
En effet, les salles sont toujours identifiées en référence au bâtiment dans lesquelles elles se trouvent, par exemple ‘SG 2005’, ‘HaF 13E’.
Choisir de définir une entité comme faible
Une même entité peut être définie comme faible ou non selon les choix du système d’information. La principale question à se poser est : comment est déterminé l’identidiant ? Si il est formé par concaténation à partir de l’identifiant d’une autre entité, on a affaire à une entité faible.
On distingue les entités et les associations faibles en doublant le trait extérieur.
Pour simplifier la compléxité des calculs à faire par le SGDB, on décompose systématiquement les associations d’arité \(k \geqslant 4\) en une entité faible et \(k\) associations binaires.
C’est possible mais pas indispensable pour les associations ternaires.
Procédé de décomposition
Soit \(A\) une association d’arité \(k\) qui associe les k entités \(E_1\), \(\dots\) , \(E_k\)
Cardinalités
Pour chaque association \(A_k\) :
nycflightsOn décompose l’association quaternaire flight en une entité faible flight, et quatre associations faibles dest, orig, operates, uses.
Une entité faible issue de la décomposition d’une association d’arité \(\geqslant 3\) peut être transformée en forte ainsi que les associations créées.
En effet, il peut être intéressant d’identifier l’entité faible de manière indépendante.
Définition
Une association est-un (is-a) entre une entité \(E\) et une entité \(F\) indique que toute instance de \(E\) est aussi instance de \(F\) (autrement dit en langage ensembliste que \(E \subseteq F\)).
On dit que \(E\) est une spécialisation de \(F\) ou que \(F\) est une généralisation de \(E\).
Remarques
Pour les associations est-un, il n’est pas nécessaire de préciser les cardinalités car on a la propriété suivante.
Cardinalités des associations est-un
1:1 du côté de l’entité spécialisée0:1 du côté de l’entité générale.Remarque : si la cardinalité minimale est également 1 du côté de l’entité générale, il y a un problème de conseption : l’existence de deux entités distinctes pose question et il n’y a pas de notion de spécialisation.
Note
L’association est identifiante : une instance de l’entité spécialisée hérite de l’identifiant de l’entité générale.
Dans le système d’information d’une assurance, un assuré peut être une entreprise, peut être un particulier :
Dans le style 1, on note graphiquement les associations est-un avec un symbole spécial : un triangle (c.a.d. une demi-association) dont la pointe est du côté de l’entité générale.
Dans le style 2, on relie toutes les spécialisations à un seul symbole, ce qui permet de représenter plus simplement les contraintes de spécialisation (cf. chap. suivant).
Avertissement
Cela ne représente plus une association is-a.
Pour simplifier le MCD (et le futur MLD, donc la base de données)
OU
OU
Le diagramme E/A à ce stade ne restitue pas toujours intégralement les informations récoltées pendant la phase de définition du système d’information.
Les contraintes de cardinalité ne sont pas les seules possibles.
Les différentes spécialisations d’une entité peuvent vérifiées :
une contrainte de spécialisation disjointe ou exclusive : une instance appartient à au plus une spécialisation.
On note X dans la représentation de la spécialisation.
une contrainte de spécialisation totale : une instance appartient à au moins une spécialisation.
On note T dans la représentation de la spécialisation.
une contrainte de spécialisation disjointe et totale : une instance appartient à exactement une spécialisation. Les spécialisations forment alors une partition de l’entité mère.
On note XT dans la représentation de la spécialisation.
En reprenant l’exemple du chapitre précédent, on note \(E\) l’ensemble des assurés, \(E_p\) l’ensemble des particuliers, \(E_e\) l’ensemble des entreprises.
Si \(E_p \cap E_e = \emptyset\), alors on a une contrainte de spécialisation exclusive.
Un assuré ne peut pas être à la fois un particulier et une entreprise mais peut être ni l’un l’autre.
Si \(E_p \cup E_e = E\), alors on a une contrainte de spécialisation totale.
Un assuré peut être à la fois un particulier et une entreprise mais ne peut pas être ni l’un l’autre.
Si \(E_p \cup E_e = E\) et \(E_p \cap E_e = \emptyset\), alors on a une contrainte de spécialisation exclusive et totale.
Un assuré ne peut pas être à la fois un particulier et une entreprise et ne peut pas être ni l’un l’autre.
Pour les associations ternaires, les cardinalités ne suffisent pas à définir toutes les contraintes interne à l’association.
Définition
Soit \(A\) une association ternaire entre des entités \(E_1\), \(E_2\) et \(E_3\), on appelle contrainte d’intégrité fonctionnelle (CIF) de \(E_2\) vers \(E_3\) par rapport à \(A\), la contrainte suivante :
Une occurence de \(E_2\) est associée par \(A\) à au plus une occurence de \(E_3\)
Autrement dit, il y a une dépendance fonctionnelle dans l’ensemble des occurences de l’association \(A\) entre l’entité \(E_2\) et l’entité \(E_3\).
Avertissement
Cette contrainte ne concerne que les cas où la cardinalité maximale du coté de \(E_2\) et \(E_3\) est \(n\).
Elle ne concerne pas les associations binaires car dans ce cas, les cardinalités définissent déjà les CIF.
On représente le système d’information d’un syndic de copropriété qui imppose la règle suivante :
Expriment des contraintes entre 2 ou plusieurs associations. On s’intéresse à la participation des occurences d’une entité \(E\) aux occurences de plusieurs associations \(A_1\), \(A_2\), \(\dots\)
On note \(E_1\), respectivement \(E_2\) l’ensemble des instances de \(E\) qui participent à l’association \(A_1\), respectivement \(A_2\).
Avertissement
Ces contraintes ne concerne que les cas où la cardinalité minimal du côté de \(E\) est \(0\).
Avertissement
\(E_1 \cap E_2 = \emptyset \quad\) autrement dit, si une occurence de \(E\) participe à une occurence de \(A_1\), alors elle ne participe pas à une occurence de \(A_2\) et vice-versa.
Exemple
Un article peut être acheté chez des fournisseurs ou approvisionné par une unité de production de l’entreprise, mais pas à la fois acheté et approvisionné en interne.

\(E_1 = E_2 \quad\) autrement dit, une occurence de \(E\) participe à une occurence de \(A_1\) si et seulement si elle participe à une occurence de \(A_2\).
Exemple
Une commande portant sur des articles est obligatoirement passée par un client et réciproquement.

\(E_1 \cup E_2 = \emptyset \quad\) autrement dit, si une occurence de \(E\) ne participe pas à une occurence de \(A_1\), alors elle participe à une occurence de \(A_2\).
Exemple
Dans le SI d’une assurance, tout véhicule est présent dans la base parce qu’il est relié soit à un contrat par l’association “couvrir”, soit à un sinistre par l’association “est-impliqué”, soit les deux.

\(E_1 \cup E_2 = E \text{ et } E_1 \cap E_2 = \emptyset \quad\) autrement dit, une occurence de \(E\) participe soit à une occurence de \(A_1\), soit à une occurence de \(A_2\) mais jamais aux deux.
Exemple
Toute commande est soit passée par un client soit provient d’un service.

\(E_1 \subseteq E_2 \quad\) autrement dit, si une occurence de \(E\) participe à une occurence de \(A_1\), alors elle participe à une occurence de \(A_2\).
Exemple
Une personne qui effectue un prêt doit avoir souscrit un abonnement.

Modélisation Entités/Associations/Cardinalités/Contraintes

MA15E045 – Bases de Données – L3 MIASHS – UParis Cité