Modélisation I : Entité/Association

Modélisation Entité/Association (ER)

2025-11-07

Introduction

Pourquoi ?

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

  • Un formalisme pour décrire les informations à intégrer dans une base
  • Un formalisme pour décrire les liens entre ses informations
  • Un formalisme lisible par les humains
  • Un formalisme traduisible dans un Langage de Définition de Données, c’est-à-dire dans un langage où tout doit se décrire à l’aide de tables et de contraintes

Comment ?

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

Modèle Entité-Association (EA/ER)

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.

Entités

Entités

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.

  • entité (Modèle EA) \(\longleftrightarrow\) ensemble (théorie des ensembles).
  • instance (Modèle EA) \(\longleftrightarrow\) élément (théorie des ensembles).

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.

Exemple d’entités : world

Pour la constitution de la base de données de géographie politique world, la modélisation choisirait les entités :

  • country: les pays/territoires
  • city: les villes de population urbaine supérieure à un seuil donné lors de la constitution de la base
  • language: les langues parlées lors de la constitution de la base

Exemple d’entités (nycflights)

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ériennes
  • planes : les avions (aéronefs)

Les noms d’entités

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.

Instances et 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.

Attributs

Définition

Après avoir choisi les entités, on recherche les propriétés qui les caractérisent. Elles sont nommées attributs.

  • attribut (Modèle EA) \(\longleftrightarrow\) fonction qui envoie une entité dans un domaine (ensemble de valeurs, type)

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 :

  • style 1 : les attributs sont représentés par des ellipses avec le nom de l’attribut à l’intérieur. Une arête relie l’ellipse attribut au rectangle entité.
  • style 2 : les attributs sont représentés comme une liste dans le rectangle de l’entité, sous un trait horizontal.

Attributs (représentation style 1)

ER country country city city name1 name city--name1 language language name2 name language--name2 name0 name name0--country population population population--country governmentForm governmentForm governmentForm--country headOfState headOfState headOfState--country

Attributs (représentation style 2)

Identifiant

Définition

Pour une entité, un identifiant est un attribut qui identifie de manière unique chaque instance.

  • identifiant (Modèle EA) \(\longleftrightarrow\) fonction injective qui envoie une entité dans un domaine (ensemble de valeurs, type).

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).

Identifiant (exemple)

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

Identifiant (représentation style 2)

Note

On distingue les identifiants en les soulignant et en les plaçant en tête.

Associations

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.

Attributs d’association

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

  • d’un attribut official qui précise si une langue donnée est officielle dans un territoire donné,
  • d’un attribut percentage qui précise le poucentage de la population qui parle cette langue dans un territoire donné.

Représentation graphique

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.

MCD style 1 du schéma world

ER country country iso iso3 country--iso city city name1 name city--name1 id id city--id is-in is-in city--is-in is-capital is-capital city--is-capital language language name2 name language--name2 isol iso language--isol is-spoken-in is-spoken-in language--is-spoken-in official official name0 name name0--country population population population--country governmentForm governmentForm governmentForm--country headOfState headOfState headOfState--country is-in--country is-spoken-in--country is-spoken-in--official is-capital--country

MCD style 2 du schéma world

Rôles

Partipations multiples à une association

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.

Exemples de rôle dans une association réflexive

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.

ER individu individu est-mère-de est-mère-de individu--est-mère-de mère 0:n est-mère-de--individu enfant 0:1

Arité

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.

Une association d’arité supérireure à 2

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.

ER airport airport flight flight airport--flight orig plane plane airline airline flight--airport dest flight--plane flight--airline

Cardinalités

Définition

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ù :

  • \(n_{min}\) = nombre minimal d’instances de \(A\) dans lesquelles une instance de \(E\) peut être présente.
  • \(n_{max}\) = nombre maximal d’instances de \(A\) dans lesquelles une instance de \(E\) peut être présente.

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.

Cas des relations binaires (2 entités)

Exemple 1:1 dans le modèle world

  • une instance de city 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).

Exemples 0:n dans le modèle world

  • une instance de country 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.
  • une instance de 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.
  • une instance de 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.

Représentation graphique des cardinalités (world)

Représentation graphique des cardinalités (nycflights13)

Les cardinalités du MCD des vols.

ER airport airport flight flight airport--flight orig 0:n plane plane airline airline flight--airport dest 0:n flight--plane 0:n flight--airline 0:n

Entités faibles

Entités faibles

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\).

Associations faibles

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 :

  • du côté de l’entité faible 1:1, car elle n’existe que par référence à l’entité forte.
  • du côté de l’entité forte, en général 0:n, car elle existe indépendamment de l’entité faible.

Exemple

Dans le système d’information de l’université Paris-Cité, si on considère les salles et les bâtiments :

  • Bâtiment est une entité forte,
  • Salle est une entité faible.

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.

Diagrammes pour les entités faibles

On distingue les entités et les associations faibles en doublant le trait extérieur.

ER Bâtiment Bâtiment is-in is-in Bâtiment--is-in 0:n Salle Salle is-in--Salle 1:1

Décomposition des associations d’arité \(k \geqslant 4\)

Association d’arité quelconque en associations binaires

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\)

  • On définit une nouvelle entité \(F\) qui remplace l’association \(A\). On lui donne le nom de l’association.
  • On définit \(k\) associations binaires \(A_k\) entre \(F\) et chacune des entités \(E_k\).

Cardinalités

Pour chaque association \(A_k\) :

  • L’entité faible \(F\) a une cardinalité 1:1.
  • L’entité \(E_k\) conserve la cardinalité qu’elle avait pour l’association \(A\).

Transformation du diagramme des vols nycflights

On décompose l’association quaternaire flight en une entité faible flight, et quatre associations faibles dest, orig, operates, uses.

ER airport airport orig orig airport--orig 0:n dest dest airport--dest 0:n plane plane airline airline flight flight operates operates flight--operates 1:1 uses uses flight--uses 1:1 orig--flight 1:1 dest--flight 1:1 operates--airline 0:n uses--plane 0:n

Entités faibles -> entités fortes

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.

Spécialisation vs généralisation

Associations est-un

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

  • Une association est-un est binaire,
  • Une entité peut participer à plusieurs associations est-un.

Cardinalités

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ée
  • 0: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.

Exemple

Dans le système d’information d’une assurance, un assuré peut être une entreprise, peut être un particulier :

  • Entités : ASSURE, ENTREPRISE, PARTICULIER,
  • Propriétés d’un assuré : N°Assuré, Nom, Adresse, type et tél,
  • Un particulier a en plus une profession,
  • Une entreprise a en plus un N°SIREN et une forme juridique.

Représentation graphique de la spécialisation (style 1)

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.

ER ASSURE ASSURE N°Assuré "N°Assuré" ASSURE--N°Assuré ENTREPRISE ENTREPRISE is-a-2 est-un ENTREPRISE--is-a-2 PARTICULIER PARTICULIER is-a-1 est-un PARTICULIER--is-a-1 is-a-1--ASSURE is-a-2--ASSURE N°SIREN N°SIREN N°SIREN--ENTREPRISE profession profession profession--PARTICULIER

Représentation de la spécialisation (style 2)

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.

Restructuration des spécialisations

Pour simplifier le MCD (et le futur MLD, donc la base de données)

  • Éliminer les entités mères (spécialisation totale avec peu d’attributs propres à l’entié mère)

OU

  • Éliminer les entités filles (entités filles ont peu d’attributs propres, participent à peu d’associations)

OU

  • Simuler la spécialisation avec une association faible (les entités filles sont vues comme des entités faibles)

Contraintes

Compléter le schéma

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.

Types de contraintes

  • Contraintes de spécialisation
  • Contraintes intra-associations
  • Contraintes inter-associations

Contraintes de spécialisation

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.

Exemples de contraintes de 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.

Contraintes intra-association : CIF

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.

Exemple de CIF

On représente le système d’information d’un syndic de copropriété qui imppose la règle suivante :

  • Les entreprises qui signent un contrat d’entretien pour une copropriété ne peuvent le faire que pour un seul type de travaux.

Contraintes inter-association

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

  • Elles doivent intervenir rarement, dans des cas où la modélisation est difficile.
  • Elles invitent à s’interroger sur la modélisation choisie car elle signifie une forme de redondance qu’il faut tenter d’éviter.

Exclusivité de participation : X

\(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.

Simultanéité de participation à plusieurs associations : S

\(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.

Totalité de participation : T

\(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.

Exclusivité et totalité de participation : XT

\(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.

Inclusion : I

\(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.

Références

Sites et Livres

  • Garcia-Molina, H., Ullman, J. D., & Widom, J. (2002). Database systems-the complete book (International Ed.). Prenctice Hall, Upper Saddle River.
  • Chen, P. P. S. (1976). The entity-relationship model—toward a unified view of data. ACM transactions on database systems (TODS), 1(1), 9-36.
  • Silberschatz, A., Korth, H. F., & Sudarshan, S. (2011). Database system concepts.

Fin

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