Leçon 6 / 8
Leçon 06 · Partie 2 — Modifier et relier

Clés et relations

Pourquoi relier des tables ?

Imagine une boutique. On a une table clients et une table commandes. Chaque commande appartient à un client. Comment la base sait-elle quelle commande appartient à quel client ? Grâce aux clés.

💡

Les clés sont le mécanisme qui relie les tables entre elles. C'est le concept central des bases de données relationnelles (comme MySQL, PostgreSQL, SQLite).

PRIMARY KEY : identifiant unique

Une clé primaire (PRIMARY KEY) est une colonne dont la valeur identifie de façon unique chaque ligne. Chaque ligne a sa propre valeur — pas deux lignes avec le même ID.

CREATE TABLE clients (
  id    INTEGER PRIMARY KEY,
  nom   TEXT    NOT NULL,
  email TEXT    UNIQUE,
  ville TEXT
);
  • PRIMARY KEY — valeur unique pour chaque ligne, jamais NULL
  • NOT NULL — cette colonne ne peut pas être vide
  • UNIQUE — les valeurs doivent être uniques (mais peut être NULL)

En SQLite, une colonne INTEGER PRIMARY KEY s'auto-incrémente. Tu n'as pas besoin de fournir l'ID à chaque INSERT — la base attribue automatiquement 1, 2, 3…

FOREIGN KEY : référencer une autre table

Une clé étrangère (FOREIGN KEY) est une colonne qui pointe vers la clé primaire d'une autre table. C'est le lien entre deux tables.

CREATE TABLE commandes (
  id           INTEGER PRIMARY KEY,
  client_id    INTEGER,
  date_commande TEXT,
  montant      REAL,
  FOREIGN KEY (client_id) REFERENCES clients(id)
);

La colonne client_id dans commandes doit contenir une valeur qui existe dans clients.id. Si tu essaies d'insérer une commande avec un client_id qui n'existe pas, la base refuse.

Visualiser les relations

🔗 Relation clients ↔ commandes

Table : clients

id 🔑 nom
1Marie
2Lucas
3Sophie

Table : commandes

id 🔑 client_id 🔗 montant
1142.00
2118.50
3295.00

client_id dans commandes pointe vers id dans clients. Marie (id=1) a deux commandes.

L'intégrité référentielle

La clé étrangère garantit l'intégrité référentielle : on ne peut pas créer une commande pour un client qui n'existe pas. La base vérifie automatiquement la cohérence.

-- ✅ OK — client 1 existe
INSERT INTO commandes (id, client_id, montant)
VALUES (4, 1, 29.99);

-- ❌ Erreur — client 999 n'existe pas
INSERT INTO commandes (id, client_id, montant)
VALUES (5, 999, 15.00);
// À retenir
  • PRIMARY KEY — identifiant unique de chaque ligne dans une table
  • FOREIGN KEY — colonne qui pointe vers la PRIMARY KEY d'une autre table
  • La clé étrangère crée le lien entre deux tables
  • Intégrité référentielle — la base refuse les données incohérentes (référence à un ID inexistant)
  • NOT NULL — la colonne ne peut pas être vide
  • UNIQUE — les valeurs dans la colonne sont toutes différentes