Clé étrangère ou foreign key en SQL : Qu’est-ce que c’est ? À quoi ça sert ?

-
3
 m de lecture
-

Celui qui conçoit un système de gestion de base de données SQL a tout intérêt à connaître et à mettre en œuvre le système des clés étrangères. Sur le long terme, il sera largement gagnant.

Une clé étrangère est une colonne (ou plusieurs colonnes) d’une base de données qui est reliée à la colonne clé primaire d’une autre table. La clé primaire en question est un simple identifiant. L’information utile – et susceptible d’évoluer – figure dans la table externe.

Quelle utilité pour une clé étrangère ?

Imaginons, vous gérez une table Articles dans laquelle figure une colonne appelée Catégorie. Pour chaque article, cette catégorie doit être remplie individuellement

À titre d’exemple, nous pourrions avoir parmi les catégories « Produit métallique ». Or, du jour au lendemain, la législation change et désormais, cette catégorie devient « Produit à base de métaux ». 

Que faire ? Va-t-il falloir modifier toutes les lignes dans lesquelles figure la catégorie « Produit métallique » ? Hélas oui. Si la table Articles s’étend sur des dizaines de milliers d’entrées, la procédure va être pour le moins fastidieuse.

C’est afin d’éviter ce genre de situations que la notion de clé étrangère a été définie. Ainsi, dans le cas évoqué juste au-dessus, l’idée va consister à créer une table séparée, appelée Catégorie, dans laquelle nous aurons comme clé primaire, un identifiant (un n° pour chaque catégorie) associé à la description correspondante. 

À partir de là, dans la table Articles, il suffira d’indiquer, pour chaque produit proposé au catalogue, l’identifiant correspondant de la table Catégories. Il sera ensuite possible d’imprimer la liste de chaque article tout en faisant apparaître (grâce à une jointure) la catégorie correspondante. 

Ainsi donc, comme nous pouvons le voir, la situation de la catégorie qui change de nom est ici résolue.

Table parente et table fille

On parle de « table parente » pour celle référencée par une autre table. Ce serait ici le cas de la table Catégories. 

Et l’on parle de « table fille » pour qui fait référence à une table externe – ce qui serait ici le cas de la table Articles.

Un exemple pratique

Voici un autre exemple d’usage d’une clé étrangère dans un cas de figure plus explicite.

Table CLIENTS

Id_Client Nom
Prénom
Âge
1 Martin
Germaine
32
2
Culprit
Thomas
22
3
Albanez
Francis
40
4
De Jonquière
Martine
33

CLIENTS est ici la table « parente ». Si le client n°4, Martine de Jonquière venait à divorcer et reprenait demain son nom de jeune fille (Heras), il suffirait de modifier cette information dans la table « parente ».

Table COMMANDES

Id_Commande
Date_Commande
Id_Client
1
11/04/2023
4
2
10/05/2023
3
3
12/05/2023
4
4
26/05/2023
4
5
16/06/2023
1

Dans cet exemple, nous retrouvons la colonne « Id_Client » dans la table COMMANDES (qui est la table « fille »). Elle pointe vers la colonne « Id_Client » de la table CLIENTS. Ainsi, nous pourrions savoir ici au moyen d’une jointure que Martine de Jonquières a passé trois fois commandes : une fois en avril et deux fois en juin.

Dans la table CLIENTS, la colonne Id_Client est la clé primaire.

Dans la table COMMANDES, la colonne Id_Client est la clé étrangère.

Avantages des clés étrangères

Intégrité référentielle

Le principal avantage lié à l’usage des clés étrangères est l’intégrité référentielle : aucune ligne de la table fille ne sera complète et valide tant qu’il n’existe pas un enregistrement correspondant dans la table parent.

Cohérence des informations

Toutes les tables qui font référence à la clé étrangère sont assurées de pouvoir produire des données cohérentes et à jour. Pour mémoire, si Martine de Jonquières change de nom, ce changement sera visible à partir de toutes les tables faisant référence à son identifiant.

Inconvénients des clés étrangères

Vitesse de traitement amoindrie

Bien évidemment, la clé étrangère va impliquer un temps de traitement informatique plus long. Chaque fois que l’on insère une nouvelle ligne dans une table telle que COMMANDES, il va être nécessaire de vérifier si l’identifiant client correspondant existe bel et bien dans la table CLIENTS.

Complexité

Faire référence à l’id_client n°4 peut apparaître plus complexe que de simplement indiquer le nom de Martine de Jonquières. Et donc, a priori, la lecture d’une base de données telles que celles des COMMANDES sera peu explicite au premier abord.

Un usage recommandé

En dépit des quelques inconvénients que leur usage peut soulever, l’usage des clés étrangères est fortement recommandé pour celui qui a pour charge de concevoir des systèmes de gestion bases de données SQL. Sur le long terme, il sera largement gagnant. Pour faire simple, nous pourrions dire qu’il importe d’utiliser le système des clés étrangères chaque fois que nous avons affaire à un type de données susceptible d’évoluer dans le temps. Les exemples abordés ici illustrent clairement ce qui pourra être gagné. Et donc, il est crucial de définir les clés étrangères dès la conception même d’une base de données SQL.

Facebook
Twitter
LinkedIn

DataScientest News

Inscrivez-vous à notre Newsletter pour recevoir nos guides, tutoriels, et les dernières actualités data directement dans votre boîte mail.

Vous souhaitez être alerté des nouveaux contenus en data science et intelligence artificielle ?

Laissez-nous votre e-mail, pour que nous puissions vous envoyer vos nouveaux articles au moment de leur publication !

Newsletter icone
icon newsletter

DataNews

Vous souhaitez recevoir notre
newsletter Data hebdomadaire ?