Modélisation I : Entité/Association

Modélisation Entité/Association (ER)

2024-11-08

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 dqns 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

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.

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 et les notations graphiques

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.

Instances et Entités

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)

Attributs

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

Attributs (notation graphique)

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

Identifiant

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é

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)

ER country country iso iso3 country--iso 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

Note

On singularise les identifiants en les soulignant.

Associations

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.

Association (exemple)

Dans world, on peut définir une association is-in entre les entités city et country.

Graphique

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 name0 name name0--country population population population--country governmentForm governmentForm governmentForm--country headOfState headOfState headOfState--country is-in--country is-spoken-in--country is-capital--country

Remarques (suite)

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.

Attributs d’association

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

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

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

ER individu individu mère mère individu--mère génitrice 0:n mère--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

Principe et objet

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

Cas des relations binaires (2 entités)

Exemples 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 1: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 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 territoire

Exemples 0:n

Dans le modèle world,

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

Diagrammes

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é

Représentation graphique des cardinalités

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

Représentation graphique des cardinalités (suite)

On peut utilement préciser les cardinalités dans notre schéma 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

Définition

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

Exemple

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.

Unités territoriales

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.

Diagrammes pour les entités faibles

ER country country iso iso3 country--iso city city name1 name city--name1 id id city--id is-in is-in city--is-in 1:1 is-capital is-capital city--is-capital 0:1 language language name2 name language--name2 isol iso language--isol is-spoken-in is-spoken-in language--is-spoken-in 0:n name0 name name0--country population population population--country governmentForm governmentForm governmentForm--country headOfState headOfState headOfState--country is-in--country 0:n is-spoken-in--country 0:n is-capital--country 0:1 nut1 nut1 is-in2 is-in nut1--is-in2 1:1 is-in2--country 0:n

Identifiant pour les entités faibles

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

ER country country iso iso3 country--iso city city name1 name city--name1 id id city--id is-in is-in city--is-in 1:1 is-capital is-capital city--is-capital 0:1 language language name2 name language--name2 isol iso language--isol is-spoken-in is-spoken-in language--is-spoken-in 0:n name0 name name0--country name3 name population population population--country governmentForm governmentForm governmentForm--country headOfState headOfState headOfState--country nut1_id id is-in--country 0:n is-spoken-in--country 0:n is-capital--country 0:1 nut1 nut1 nut1--name3 nut1--nut1_id is-in2 is-in nut1--is-in2 1:1 is-in2--country 0:n

entia non sunt multiplicanda praeter necessitatem

Associations faibles

Définition

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

Exemple

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.

Transformations

Association d’arité quelconque en associations binaires

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.

Transformation du diagramme des vols

On définit donc

  • une entité faible flight
  • quatre associations faibles 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)

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

Associations est-un

Définition

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

  • Une association est-un est binaire
  • Une entité peut participer à plusieurs associations est-un
  • Si A ◃ B on dit (souvent) que A est une spécialisation de B

Propriété

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ée
  • 0:1 du côté de l’entité générale

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

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.

Diagramme

ER médecin médecin matricule matricule médecin--matricule hospitalier hospitalier is-a-1 est-un hospitalier--is-a-1 libéral libéral is-a-2 est-un libéral--is-a-2 is-a-1--médecin is-a-2--médecin hôpital hôpital hôpital--hospitalier cabinet cabinet cabinet--libéral

Contraintes

Compléter le schéma

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

Types de contraintes

  • Contraintes d’exclusion

Dans nycflights, deux instances de l’association flights portant sur le même aéronef ne devraient pas se chevaucher dans le temps

  • Contraintes de spécialisation
    • Contrainte de spécialisation disjointe : une instance appartient à au plus une spécialisation
    • Contrainte de spécialisation totale : une instance appartient à au moins une spécialisation
    • Contrainte de spécialisation disjointe et totale : une instance appartient à exactement une spécialisation

Restructuration des spécialisations

Pourquoi ?

Plusieurs manières de procéder:

  • É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)

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