15
Chapitre 15 sur 21

Les clés primaires

Une base de données doit pouvoir identifier chaque ligne sans ambiguïté. C’est le rôle de la clé primaire : un identifiant unique, stable, et indispensable pour UPDATE, DELETE, et surtout pour relier plusieurs tables.

À quoi sert une clé primaire ?

Une clé primaire (Primary Key) est une colonne (ou un groupe de colonnes) qui identifie une ligne de façon unique dans une table. Grâce à elle, on peut dire : “je veux modifier ou supprimer cette ligne précise”.

🪪

Analogie : carte d’identité

Dans la vie, deux personnes peuvent s’appeler “Ahmed”, mais elles n’ont pas le même numéro de carte d’identité. En base de données, la clé primaire joue le rôle du numéro unique.

📖

Définition : clé primaire

Une clé primaire est un champ (ou plusieurs champs) dont la valeur est : unique et non nulle. Une table ne peut avoir qu’une seule clé primaire.

Les 3 règles d’une bonne clé primaire

1

Unique

Deux lignes ne peuvent pas avoir la même valeur de clé primaire.

2

Jamais NULL

Une clé primaire doit toujours être renseignée.

3

Stable

Elle ne doit pas changer facilement (sinon ça casse les liens entre tables).

Conclusion

On utilise souvent un id numérique auto-généré.

Exemple : créer une table avec une clé primaire

Vous avez déjà vu CREATE TABLE. Ici on ajoute une clé primaire :

CREATE TABLE films (
  id INTEGER PRIMARY KEY,
  titre TEXT NOT NULL,
  annee INTEGER,
  note INTEGER
);
💡

Selon votre SGBD

Les mots exacts peuvent changer selon MySQL / PostgreSQL / SQLite. L’idée reste la même : une colonne unique et non nulle.

Clé primaire auto-incrémentée : pourquoi c’est pratique

Dans beaucoup de projets, vous ne voulez pas choisir un id à la main. Vous voulez que la base attribue automatiquement 1, 2, 3, 4…

⚙️

Avantage

La base garantit l’unicité. Vous ne risquez pas de doublon d’id.

🧠

Résultat

Vous pouvez insérer sans préciser l’id : la base le génère.

Très courant

C’est le standard dans la plupart des applications web.

⚠️

À savoir

Le mot “AUTO_INCREMENT” ou “SERIAL” dépend du SGBD.

-- Exemple d'insertion sans id (si auto-généré)
INSERT INTO films (titre, annee, note)
VALUES ('Inception', 2010, 9);

Pourquoi la clé primaire est indispensable pour UPDATE / DELETE

Dans les chapitres 13 et 14, vous avez vu que UPDATE et DELETE sont dangereux sans WHERE. Le meilleur WHERE possible est souvent : WHERE id = ...

-- Modifier une seule ligne
UPDATE films
SET note = 10
WHERE id = 3;
-- Supprimer une seule ligne
DELETE FROM films
WHERE id = 3;

Réflexe professionnel

Quand une table n’a pas de clé primaire, on perd rapidement le contrôle : doublons, mises à jour imprécises, suppression trop large… La clé primaire “sécurise” votre travail.

Clé primaire composite : quand une seule colonne ne suffit pas

Parfois, une seule colonne ne peut pas être unique. Exemple : une table inscriptions qui relie un étudiant à un cours. Un étudiant peut s’inscrire à plusieurs cours, et un cours contient plusieurs étudiants. Dans ce cas, la combinaison (etudiant_id, cours_id) peut être unique.

CREATE TABLE inscriptions (
  etudiant_id INTEGER,
  cours_id INTEGER,
  PRIMARY KEY (etudiant_id, cours_id)
);
📌

Définition

Une clé primaire composite est une clé primaire composée de plusieurs colonnes. L’unicité est garantie par la combinaison de ces colonnes.

Choisir une bonne clé primaire : bonnes pratiques

1

Éviter les champs “humains”

Évitez de prendre comme clé primaire : nom, email, téléphone… Car ces valeurs peuvent changer et peuvent contenir des doublons.

2

Préférer un id technique

Un id auto-généré est simple, stable et efficace.

3

Définir la clé dès la création

On définit la clé primaire au moment de CREATE TABLE, pas “plus tard” quand les données sont déjà en place.

Exercice pratique : identifier la bonne clé

Pour chaque table ci-dessous, choisissez une clé primaire logique. (Répondez “id auto-incrémenté” ou “clé composite” selon le cas.)

1) Table clients

Colonnes : nom, prenom, email, ville

Question : quel champ pourrait être unique ? Est-ce stable ?

2) Table produits

Colonnes : nom, prix, stock, categorie

Question : un nom de produit est-il toujours unique ?

3) Table inscriptions

Colonnes : etudiant_id, cours_id, date_inscription

Question : une clé composite a-t-elle du sens ici ?

Bonus

Créez une table “clients” avec un id en clé primaire.

CREATE TABLE clients (
  id INTEGER PRIMARY KEY,
  nom TEXT
);
🧠

Auto-correction

En général : pour “clients” et “produits”, on choisit un id technique. Pour “inscriptions”, une clé composite est très logique.

Récapitulatif du chapitre

Ce que vous savez faire

  • Expliquer ce qu’est une clé primaire
  • Connaître ses règles : unique, non nulle, stable
  • Créer une table avec une clé primaire
  • Comprendre l’intérêt pour UPDATE / DELETE
  • Découvrir les clés primaires composites
  • Choisir une clé primaire adaptée à un cas réel

Prochain chapitre : vous allez apprendre les relations entre tables (clé primaire ↔ clé étrangère).