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