Clés étrangères

Objectifs

  • Savoir représenter des liens entre des relations ;

  • Comprendre le lien entre clé primaire et clé étrangère.

Mise en situation

En relationnel, les seuls éléments que vous avez à votre disposition pour décrire vos données sont les relations.

Or, si vous modélisez des réserves naturelles, vous aurez probablement une relation décrivant les lieux de ces réserves, et une relation décrivant les animaux qui s'y trouvent.

On peut se représenter ces deux relations comme deux tableaux : mais comment faire le lien entre ces tableaux, par exemple pour indiquer qu'un animal est présent dans une réserve particulière ?

Comme il n'est pas possible de « tracer de trait » entre les deux tableaux, il faut trouver une autre solution, et c'est tout l'objet des clés étrangères, que vous allez découvrir dans ce module.

Le modèle relationnel a pour objectif la structuration de données selon des relations. L'enjeu est de parvenir à traduire un modèle conceptuel en modèle logique relationnel. Or, il n'y a pas de notion d'association en relationnel, donc il faudra pouvoir traduire les associations avec les concepts dont on dispose : relation, clé, clé étrangère.

Afin de représenter des références entre relations dans un modèle relationnel, la seule solution est de stocker l'information dans une relation, et donc que certains attributs d'une relation servent à pointer sur d'autres relations.

Attention

Il n'y a pas vraiment de référence ou de lien en relationnel, puisque nous ne disposons que de tables, de clés, de clés étrangère et de valeurs.

On va donc devoir se servir de ces outils pour matérialiser une notion de référence.

MéthodeRéférence

La référence entre deux tuples T1 et T2 de deux relations différentes est exprimable par une valeur identique entre une clé étrangère du tuple T1 et la clé primaire de l'autre tuple T2.

Synonyme : Lien

Exemple

L'attribut a2 de la relation R1 référence l'attribut b1 de la relation R2 car a2 est une clé étrangère de R1 vers R2 (b1 est la clé primaire de R2).

Ici on a donc par exemple les tuples identifiés par B et C de R1 qui référencent le tuple identifié par 1 dans R2.

DéfinitionClé étrangère

Une clé étrangère est un attribut ou un groupe d'attributs d'une relation R1, devant apparaître comme clé primaire dans une relation R2, afin de matérialiser une référence entre les tuples de R1 et les tuples de R2.

Une clé étrangère d'un tuple référence une clé primaire d'un autre tuple.

Attention

Seule une clé primaire peut être référencée par une clé étrangère.

C'est même la seule fonction de la clé primaire : être la clé qui peut être référencée par les clés étrangères.

DéfinitionContrainte d'intégrité référentielle

Une clé étrangère respecte la contrainte d'intégrité référentielle si sa valeur est effectivement existante dans la clé primaire d'un tuple de la relation référencée, ou si sa valeur est null.

Une clé étrangère qui ne respecte pas la contrainte d'intégrité référentielle exprime un lien vers un tuple qui n'existe pas et donc n'est pas cohérente.