Modèle Entité-Association

Modèles de données

Pourquoi structurer une base de données ?

Afin d’illustrer pourquoi il est essentiel de structurer correctement une base de données, reprenons notre exemple de tableau et envisageons les risques encourus lors de différentes opérations.

Insertion

Les erreurs de typographie ou des conventions d’écriture constituent une source importante de problèmes dans l’utilisation d’une base de données. Imaginez qu’en fonction de l’utilisateur, le nom d’une même espèce soit orthographié différemment:

  • Arabidopsis thaliana, A. thaliana, A thaliana, Arabidospis, …

Chacun des enregistrements contenant une variante de ce nom d’espèce sera considéré comme appartenant à une espèce différente. La recherche de données concernant cette espèce sera donc largement biaisée.

Modification

A supposer que nous voulions ré-orthographier un nom d’espèce, il est, dans la même logique, nécessaire de modifier chaque enregistrement qui concerne l’espèce en question et cela sans introduire d’erreurs de typographie.

Suppression

Si un seul gène est répertorié pour une espèce particulière dans notre base de données, la suppression de l’enregistrement relatif à ce gène conduira également à la suppression d’autres informations concernant cette espèce: taxon, …

Comment structurer une base de données ?

La solution pour éviter ces problèmes repose sur 3 concepts :

  • Séparer les informations dans des tableaux différents afin qu’une action sur l’une n’entraîne pas forcément une action sur l’autre (fig. 1).
  • Définir une méthode d’identification des éléments d’un tableau afin de s’assurer de leur unicité.
  • Préserver les liens qui existent entre les différents tableaux ainsi créés (fig. 2).

Figure 1: Séparation des informations et création d’un identifiant unique. Cette transformation permet de supprimer ou de limiter la répétition des mêmes informations sur plusieurs lignes. L’unicité de chaque ligne (ou enregistrement) qui en résulte conduit fréquemment à l’ajout d’une étiquette numérique (ou identifiant) qui facilite le référencement des données sous la forme ’tableau > numéro de ligne’.
Figure 1: Séparation des informations et création d’un identifiant unique. Cette transformation permet de supprimer ou de limiter la répétition des mêmes informations sur plusieurs lignes. L’unicité de chaque ligne (ou enregistrement) qui en résulte conduit fréquemment à l’ajout d’une étiquette numérique (ou identifiant) qui facilite le référencement des données sous la forme ’tableau > numéro de ligne’.

Figure 2: Préservation des liens. La structuration des données sous la forme de plusieurs tableaux indépendants implique que le lien qui existait au sein d’une même ligne dans le tableau global est rompu. Il est donc nécessaire de recréer ce lien en utilisant le référencement ’tableau > numéro de ligne’.
Figure 2: Préservation des liens. La structuration des données sous la forme de plusieurs tableaux indépendants implique que le lien qui existait au sein d’une même ligne dans le tableau global est rompu. Il est donc nécessaire de recréer ce lien en utilisant le référencement ’tableau > numéro de ligne’.

Le modèle Entité-Association

La modélisation utilisant le concept d’entités et d’associations est un outil permettant de concevoir la structure d’une base de données afin d’intégrer, dès l’origine, les bons principes énoncés ci-dessus.

Ce modèle fournit le moyen de définir un schéma conceptuel de la base de données que l’on souhaite construire. Il permet de décrire plus naturellement les informations et les relations entre celles-ci sans se préoccuper initialement de la manière dont elles seront structurées en tables et colonnes.

Les types d’entités

Il s’agit de tout groupe d’éléments identifiable du domaine d’application (contexte) pour lequel on souhaite établir une base de données (fig. 3).

Dans notre exemple, il peut s’agir des Organismes, des Gènes, des Protéines, … Chaque élément particulier appartenant à un type d’entités est appelé entité.

Figure 3: Représentation symbolique des types d’entités.
Figure 3: Représentation symbolique des types d’entités.

Les Attributs

Les entités sont caractérisées par des propriétés (fig. 4). Il s’agit par exemple du nom et du numéro du taxon pour le type d’entités Organismes. Les attributs se définissent en fonction de leur type (numérique, caractère, date, …) et leur cardinalité (faculatif [0-1], obligatoire [1-1])

Figure 4: Représentation des types d’entités et des attributs à l’aide du système de modélisation UML (Unified Modeling Language).
Figure 4: Représentation des types d’entités et des attributs à l’aide du système de modélisation UML (Unified Modeling Language).

Les Identifiants

Un identifiant, ou clé, est un attribut ou un ensemble d’attributs qui permet(tent) d’identifier de manière unique un élément d’un type entités. Si aucun des attributs (seul ou en combinaison avec d’autres) ne suffit à distinguer chaque élément d’un type d’entités, il est nécessaire de créer un attribut dont la fonction sera de servir de clé.

Il peut arriver qu’un même type d’entités possède plus d’un identifiant. Dans ce cas, l’un d’entre eux est désigné comme primaire et les autres secondaires. Notez que les identifiants primaires ont naturellement un caractère obligatoire.

Nous reviendrons ultérieurement sur cette notion d’identifiant et la manière de les définir.

Les types d’Associations

Les relations qui existent entre différentes entités sont qualifiées d’associations (fig. 5). Ces associations se traduisent généralement intuitivement par des actions menées ou subies par une entité. Dans notre exemple, on peut par exemple définir les associations suivantes :

  • Un organisme possède un gène
  • Un gène code pour une Protéine

Figure 5: Représentation UML de 2 types d’entités reliés par un type d’associations.
Figure 5: Représentation UML de 2 types d’entités reliés par un type d’associations.

Tout comme pour les attributs, on distingue plusieurs types d’associations en fonction de leur classe fonctionnelle et de leur caractère obligatoire ou non. Il existe 3 classes fonctionnelles de types d’associations:

  • un-à-plusieurs
  • un-à-un
  • plusieurs-à-plusieurs

Type d’associations un-à-plusieurs (1:N)

Cela peut être le cas de l’association qui lie les Organismes aux Gènes: un organisme possède plusieurs gènes, mais chaque gène n’existe que chez un seul organisme (tout dépend bien sûr de l’information contenue dans le type d’entités Gènes) (fig. 6 et fig. 7).

Figure 6: Illustration d’un type d’associations un-à-plusieurs. Un organisme possède des (N) gènes, tandis qu’un gène est possédé par un seul (1) organisme.
Figure 6: Illustration d’un type d’associations un-à-plusieurs. Un organisme possède des (N) gènes, tandis qu’un gène est possédé par un seul (1) organisme.

Figure 7: Représentation UML d’un type d’associations un-à-plusieurs. La représentation du caractère quantitatif d’un type d’association (voir plus loin, cardinalité) peut sembler contre-intuitive: la logique suivie est qu’on indique sur chaque branche du type d’associations, le nombre maximum d’associations dans lesquelles une entité peut apparaître (en d’autres termes, le nombre de flèches que l’on peut tracer au départ d’un élément de ce type d’entités)
Figure 7: Représentation UML d’un type d’associations un-à-plusieurs. La représentation du caractère quantitatif d’un type d’association (voir plus loin, cardinalité) peut sembler contre-intuitive: la logique suivie est qu’on indique sur chaque branche du type d’associations, le nombre maximum d’associations dans lesquelles une entité peut apparaître (en d’autres termes, le nombre de flèches que l’on peut tracer au départ d’un élément de ce type d’entités)

Type d’associations un-à-un (1:1)

Si on considère la relation entre un type d’entités mRNA et un type d’entités Protéines, l’association traduction est, en simplifiant, de type un-à-un (fig. 8).

Figure 8: Illustration d’un type d’associations un-à-un.
Figure 8: Illustration d’un type d’associations un-à-un.

Type d’associations plusieurs-à-plusieurs (N:N)

Prenons l’exemple de la relation existant entre des publications et des gènes auxquelles elles font référence. Il est imaginable qu’une publication puisse faire référence à plusieurs gènes et, à l’inverse, qu’un seul gène puisse être cité dans plusieurs publications (fig. 9 et fig. 10).

Figure 9: Illustration d’un type d’associations plusieurs-à-plusieurs.
Figure 9: Illustration d’un type d’associations plusieurs-à-plusieurs.

Figure 10: Représentation UML d’un type d’associations plusieurs-à-plusieurs et de sa cardinalité.
Figure 10: Représentation UML d’un type d’associations plusieurs-à-plusieurs et de sa cardinalité.

Caractère facultatif ou obligatoire d’une association

On peut définir que certaines entités doivent obligatoirement participer à une association. C’est par exemple le cas de la relation possède qui relie Organismes à Gènes: tout organisme possède forcément, au minimum, un gène. Ce caractère obligatoire sera traduit par une cardinalité composée d’un couple min-max du type [1-N] ou [1-1] (fig. 11).

Figure 11: Représentation UML de la cardinalité d’un type d’associations obligatoire.
Figure 11: Représentation UML de la cardinalité d’un type d’associations obligatoire.

A l’inverse, lorsqu’une relation est facultative, un gène n’est pas forcément traduit en protéine, la composante min de la cardinalité prendra la valeur 0 et sera du type [0-N] ou [0-1] (fig. 12).

Figure 12: Représentation UML de la cardinalité d’un type d’associations facultative.
Figure 12: Représentation UML de la cardinalité d’un type d’associations facultative.