Quelle est la différence entre une clé primaire et une clé étrangère ?


💡 La différence entre une clé primaire et une clé étrangère en bref
Dans une base de données relationnelle, les informations sont rangées dans des tables. La clé primaire est la colonne (ou le groupe de colonnes) qui identifie de façon unique chaque ligne d’une table, comme un numéro de client : elle ne peut être ni vide ni en double. La clé étrangère est une colonne qui fait référence à la clé primaire d’une autre table, comme le numéro de client inscrit sur une commande : elle sert à relier les tables entre elles et garantit que la commande correspond bien à un client existant.

Quelle est la différence entre une clé primaire et une clé étrangère ? Ces deux notions sont au cœur des bases de données, du site e-commerce au logiciel de gestion, et elles posent souvent question aux débutants en SQL.

Définitions, rôle, exemples concrets en SQL, intégrité référentielle et bonnes pratiques : voici tout ce qu’il faut savoir.

1970naissance du modèle relationnel
1seule clé primaire par table
0valeur vide autorisée dans une clé primaire

Clé primaire ou clé étrangère : le tableau comparatif

🔑 Clé primaire🔗 Clé étrangère
RôleIdentifier chaque ligne de façon uniqueRelier une table à une autre
UnicitéObligatoire : pas de doublonPas obligatoire : doublons possibles
Valeur vide (NULL)InterditeAutorisée selon les cas
Nombre par tableUne seuleAutant que nécessaire
Fait référence àRien, elle est la référenceLa clé primaire d’une autre table
Exempleid_client dans la table clientsid_client dans la table commandes
Mot-clé SQLPRIMARY KEYFOREIGN KEY … REFERENCES
Différence entre clé primaire et clé étrangère : infographie comparative
La clé primaire identifie, la clé étrangère relie.

🔑 La clé primaire : l’identifiant unique

Une clé primaire est un attribut, ou un ensemble d’attributs, qui permet d’identifier de façon unique chaque ligne d’une table, rappelle Wikipédia.

Elle doit respecter deux règles : chaque valeur est unique, et elle ne peut jamais être vide (NULL). Une table ne possède qu’une seule clé primaire.

Dans la pratique, on utilise souvent un numéro automatique : 1, 2, 3… Ce type de clé, appelé clé de substitution, ne change jamais, même si le client change de nom ou d’adresse.

On peut aussi utiliser une donnée naturelle, comme un numéro ISBN pour un livre, ou combiner plusieurs colonnes : on parle alors de clé composée.

En SQL, on la déclare avec PRIMARY KEY, par exemple : id_client INT PRIMARY KEY.

Pour d’autres notions de programmation, lisez la différence entre les boucles tant que et jusqu’à.

🔗 La clé étrangère : le lien entre les tables

Une clé étrangère est une colonne dont les valeurs font référence à la clé primaire d’une autre table, explique Wikipédia.

Par exemple, dans une table commandes, la colonne id_client indique quel client a passé chaque commande. Elle renvoie à la clé primaire de la table clients.

Contrairement à la clé primaire, une clé étrangère peut contenir des doublons : un même client peut avoir passé plusieurs commandes.

Schéma de deux tables clients et commandes reliées par une clé étrangère
La colonne id_client de la table commandes renvoie à la table clients.

L’intégrité référentielle

La clé étrangère garantit l’intégrité référentielle : il est impossible d’enregistrer une commande pour un client qui n’existe pas.

On peut aussi définir ce qui se passe quand on supprime un client : interdire la suppression s’il a des commandes, ou supprimer aussi ses commandes, avec l’option ON DELETE CASCADE.

En SQL, on la déclare ainsi : FOREIGN KEY (id_client) REFERENCES clients(id_client).

Ces règles évitent les données « orphelines » et les incohérences, ce qui est essentiel pour un site marchand, une banque ou un hôpital.

Bases de données relationnelles et bonnes pratiques

Illustration d'une base de données reliant des tables de clients, commandes et produits
Une base relationnelle relie ses tables grâce aux clés.

Les clés primaires et étrangères reposent sur le modèle relationnel, proposé en 1970 par l’informaticien Edgar F. Codd chez IBM.

Ce modèle est utilisé par les grands systèmes de gestion de bases de données, comme MySQL, PostgreSQL, Oracle, SQL Server ou SQLite, que l’on interroge avec le langage SQL.

Une bonne pratique consiste à choisir une clé primaire stable, qui ne change jamais : un numéro de téléphone ou une adresse e-mail sont de mauvais choix, car ils peuvent évoluer.

Il est aussi conseillé de créer un index sur les colonnes de clé étrangère, pour accélérer les recherches et les jointures entre tables.

Enfin, bien nommer ses clés, par exemple id_client dans les deux tables, rend le schéma beaucoup plus lisible pour toute l’équipe.

Clé primaire ou clé étrangère : comment s’en souvenir ?

✅ On peut dire
Utilisez une clé primaire dans chaque table pour identifier ses lignes.
Utilisez une clé étrangère pour relier une table à une autre.
❌ À éviter
Ne choisissez pas une donnée qui peut changer comme clé primaire.
Ne supprimez pas des lignes référencées sans réfléchir aux conséquences sur les autres tables.

Concrètement, pensez à une carte d’identité : son numéro unique est la clé primaire ; quand ce numéro apparaît sur un autre document pour vous désigner, c’est une clé étrangère.

Pour aller plus loin, découvrez la différence entre XML et HTML.

Pour apprendre à interroger une base de données, voici les livres sur SQL les plus vendus :

Et pour concevoir vos propres bases, voici les livres sur les bases de données les plus vendus :

Questions fréquentes

Quelle est la différence entre une clé primaire et une clé étrangère ?

La clé primaire identifie de façon unique chaque ligne d’une table. La clé étrangère est une colonne qui fait référence à la clé primaire d’une autre table, pour relier les deux.

Une table peut-elle avoir plusieurs clés primaires ?

Non, une seule. Mais cette clé primaire peut être composée de plusieurs colonnes.

Une clé étrangère peut-elle être vide ?

Oui, selon la conception de la base : une valeur NULL signifie alors qu’il n’y a pas de lien.

Une clé étrangère peut-elle contenir des doublons ?

Oui. Un même client peut par exemple avoir plusieurs commandes.

Qu’est-ce que l’intégrité référentielle ?

C’est la règle qui empêche une clé étrangère de pointer vers une ligne qui n’existe pas dans l’autre table.

Que fait ON DELETE CASCADE ?

Quand on supprime une ligne référencée, les lignes qui y font référence sont automatiquement supprimées aussi.

En résumé

En résumé, la différence entre une clé primaire et une clé étrangère tient à leur rôle : la clé primaire identifie de façon unique chaque ligne d’une table, sans doublon ni valeur vide ; la clé étrangère relie une table à une autre en faisant référence à cette clé primaire, et garantit la cohérence des données.

📌 À retenir
✔ Clé primaire = identifiant unique
✔ Clé étrangère = lien vers une autre table
✔ Une seule clé primaire par table
✔ L’intégrité référentielle évite les incohérences

Merci de votre lecture ! Travaillez-vous avec des bases de données au quotidien ? Dites-le-nous en commentaire.

Sources

Dernière mise à jour le 2026-10-09 / Liens affiliés / Images de l'API Amazon Partenaires

Jean Carpentier

Je m'appelle Jean, je suis le créateur et l'auteur principal de ce site. Je suis un grand curieux et j'adore me documenter sur tout type de sujets. Grâce à mon expérience sur le web, je vous partage mes découvertes sur ce site :)

Articles récents