Modélisation Entité/Association (ER)
2024-11-08
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
Une entité est un ensemble d’objets apparentés. Les éléments d’une entite sont appelées instances.
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.
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/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 caractériques communes)
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.
Définition
Une instance 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)
Définition
Un attribut est une 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)
Dans les diagrammes EA, les attributs sont représentés par des ellipses. Le nom de l’attribut est placé au centre de l’ellipse
Un arête relie l’ellipse attribut au rectangle entité.
Définition
Pour une entité, un identifiant est un attribut qui envoie deux instances distinctes vers deux valeurs distinctes du domaine.
Astuce
Un identifiant est un attribut (une fonction) injectif(ve)
Dans un schéma EA, on choisit un attribut injectif et on le désigne comme identifiant en soulignant le nom de l’attribut.
L’identifiant d’une entité n’est pas le nom de l’entité
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 singularise les identifiants en les soulignant.
Définition
Une association \(\mathcal{A}\) $entre les entités \(E_1,E_2, \ldots, E_k\), est un sous-ensemble de \(E_1 \times E_2 \times \ldots \times E_k\)
Les entités \(E_1,E_2, \ldots, E_k\) participent à l’association \(A\).
Les éléments de l’association sont (aussi) appelés instance
Dans un diagramme EA, une association est représentée par un losange. Le nom de l’association est inscrit au centre du losange. Les rectangles des entités participantes sont reliés au losange de l’association par des arêtes.
Remarque
Une association porte un nom
Une association peut posséder des attributs qui sont des fonctions de l’association vers un domaine/type.
Dans world
, on peut définir une association is-in
entre les entités city
et country
.
Note
Une association est représentée par un losange, elle est nommée.
Le losange est relié aux dfférentes entités participantes par une arête
Le nom d’une association reflète (en principe) la signification de cette association.
Le nom d’une association renvoie souvent à un verbe, pas forcémment d’action
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 association peut posséder des attributs.
Graphiquement, les attributs d’association sont représentés comme les attributs d’entité, par des ellipses. Les ellipses sont reliées au losange de l’association par une arête
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é.
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 mère
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 mère
\(x\) joue le rôle de la génitrice, \(y\) de l’enfant.
On peut rendre compte de ces rôles en marquant les arêtes qui lient l’entité individu
à l’association mère
(pour est-maman-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
Les cardinalités sont des décorations sur les arêtes qui relient entités et associations
1:1
Dans le modèle world
,
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)1:n
Dans le modèle world
,
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 city
. 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 territoire0:n
Dans le modèle world
,
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
.Une indication de cardinalité comporte une borne inférieure (0 ou 1) et une borne supérieure (1 ou \(n\))
On décore le lien entité-association avec l’indication de cardinalité
On peut utilement préciser les cardinalités dans notre schéma des vols.
Note
Une entité faible \(E\) est définie relativement à une entité \(A\). C’est une collection d’objets apparentés (comme une entité), mais chaque instance de \(E\) est liée (est partie de) à une et une seule instance de \(A\).
Dans world
, on peut considérer que les instances de country
sont des unités territoriales de niveau 0
. Ces unités territoriales de niveau 1
sont parfois découpées en unités territoriales de niveau 1
: les régions en France, en Italie, les Länder en Allemagne, …
Chaque unité territoriale de niveau 1
est située dans une et une seule unité territoriale de niveau 0
, elle fait partie de l’unité territoriale de niveau 0
.
Nous allons ajouter à notre modèle EA Géographie une entité faible appelée nut1
(pour Nouvelle Unité Territoriale de niveau 1)
L’entité faible nut1
est liée à l’entité forte country
par une association faible is-in
.
Pour identifier une instance d’une entité faible, on utilise l’identifiant de l’instance associée de l’entité faible et on le complète à l’aide d’un identifiant relatif.
Deux instances distinctes d’une identité faible peuvent porter le même identifiant relatif (si elles sont parties de deux instances différentes de l’entité forte).
Nous ajoutons à notre modèle EA un identifiant relatif/faible id
pour l’entité faible nut1
Pour identifier une instance de nut1
, il faut disposer de son identifiant relatif id
et de l’identifiant iso3
de l’instance associée dans l’entité forte.
On dit que l’association faible is-in
est identifiante
entia non sunt multiplicanda praeter necessitatem
Note
Une association qui relie une entité faible à une entité forte qui participe à l’identification des instances de l’entité faible est dite faible.
Les instances de l’entité faible participentt à cette association faible avec une cardinalité 1:1
Les instances de l’entité forte participent à l’association faible avec une cardinalitę 0:n
Dans nycflights
, si on représente les vols (flight
) comme des entités faibles, les associations entre vols et aéroports (décolle de, atterrit à) sont des associations faibles, chaque instance de flight
participe une fois exactement à chaque association faible.
On définit une entité faible de même nom que l’association.
Pour chaque entité participant à l’association, on définit une association faible entre l’entité participante et la nouvelle entité faible.
Si une entité participe plusieurs fois à l’association, on définit autant d’associations faibles qu’on nomme à l’aide des rôles
L’entité faible participe aux associations faibles avec une cardinalité 1:1
Les entités participantes sont reliées aux associations faibles avec les cardinalités de leur participation à l’associatoin \(n\)-aire.
On définit donc
flight
dest
, orig
, operates
, uses
Les quatre associations faibles sont identifiantes
Pour identifier une instance de l’entité faible flight
, il faut disposer des identifiants des instances des entités fortes associées (une par entité forte, compte tenu des cardinalités)
Définition
Une association est-un entre une entité A
et une entité B
indique que toute instance (élément) de A
est aussi instance (élément) de B
(autrement dit en langage ensembliste que A ⊆ B
)
On note graphiquement les associations est-un avec un symbole spécial : un triangle (A ◃ B
)
Remarques
A ◃ B
on dit (souvent) que A
est une spécialisation de B
Pour les associations est-un, il n’est pas nécessaire de préciser les cardinalités.
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éraleNote
L’association est identifiante : une instance de l’entité spécialisée hérite de l’identifiant de l’entité générale
Un médecin peut exercer en mode libéral, au sein d’un cabinet, ou dans une clinique (ou les deux) ou exercer en milieu hospitalier.
Il est aussi possible qu’un médecin partage son temps entre une activité hospitalière et une activité libérale.
On peut définir une entité générale médecin
et deux entités spécialisées hospitalier
et libéral
. Les entités spécialisées sont reliées à l’entité générale par une association est-un
.
Une association est-un
nous indique qu’une entité (un emsemble) est incluse dans une autre entité (un au ensemble)
Tout attribut (fonction) défini sur l’entité générale est défini sur les entités spécialisées
Certains attributs peuvent être définis sur une entité spécialisée sans être définis sur toute l’entité générale
Par exemple, on peut définir un attribut hôpital
pour l’entité hospitalier
, et un attribut cabinet
pour l’entité libéral
.
Le schéma/diagramme 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 autres contraintes rentrent dans la catégorie des contraintes dites externes (elles sont externes au diagramme)
Les contraintes externes doivent être consignées et prises en compte ultérieurement lors de la traduction en modèle relationnel
Dans nycflights
, deux instances de l’association flights
portant sur le même aéronef ne devraient pas se chevaucher dans le temps
Pourquoi ?
Plusieurs manières de procéder:
OU
OU
Modélisation Entités/Associations/Cardinalités/Contraintes
MA15Y030 – Bases de Données – L3 MIASHS – UParis Cité