Easier to read with cream paper, a tint, more contrast or larger text? Choose your colours and text, once, for every page.

Aperçu

Relier des tables

Voici la première page de la leçon. Lis-la et essaie les activités. La suite est dans le cours complet.

35 minutes

Le nom écrit deux fois

Le CDI garde la liste de ses livres. Sur chaque fiche, on recopie le nom de l'auteur.

Marcel Pagnol a écrit deux livres du CDI. Son nom est donc écrit deux fois. Un jour, quelqu'un met un espace de trop après le nom.

Voyons ce qui se passe, puis comment l'éviter.

Mots-clés

MotCe que ça veut direExemple
Clé primaireLa colonne qui distingue chaque ligne d'une table.id dans auteurs
Clé étrangèreUne colonne qui garde la clé primaire d'une ligne d'une autre table. Elle crée le lien.auteur_id dans livres
RéférenceLe fait de pointer vers une ligne d'une autre table.auteur_id = 2 pointe vers Marcel Pagnol.
IntégritéLe fait que les données restent justes : aucun lien ne pointe dans le vide.Pas d'auteur numéro 9 s'il n'existe pas.
DoublonLa même information écrite plusieurs fois.Le nom de l'auteur recopié.
LienCe qui relie une ligne d'une table à une ligne d'une autre.Un livre et son auteur.
FOREIGN KEYLes mots SQL qui déclarent une clé étrangère. En français : clé étrangère.FOREIGN KEY (auteur_id)
REFERENCESLe mot SQL qui dit vers quelle table et quelle colonne le lien pointe.REFERENCES auteurs (id)

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Le problème du nom recopié

Quand on recopie une information, on prend trois risques.

  • Une faute : « Pagnol » écrit de deux façons.
  • Un changement : il faut le corriger dans toutes les lignes.
  • Un gaspillage : le même nom est stocké des centaines de fois.

À toi : le livre qui manque

Code: sql
-- Tous les livres de Marcel Pagnol, dans la table où le nom est recopié.
SELECT titre FROM livres_en_vrac WHERE auteur = 'Marcel Pagnol';

-- Il en manque un ! Regarde toute la table pour trouver pourquoi.
SELECT id, titre, auteur FROM livres_en_vrac;

Deux tables au lieu d'une

La solution : une table pour les auteurs, une table pour les livres.

Chaque auteur est écrit une seule fois, avec un numéro. Dans la table des livres, on garde seulement ce numéro, pas le nom.

Exemple travaillé : la table auteurs

idnom
1Victor Hugo
2Marcel Pagnol
3Molière
4Jules Verne

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Exemple travaillé : la table livres

idtitreauteur_id
1Les Misérables1
2Notre-Dame de Paris1
3La Gloire de mon père2
4Le Malade imaginaire3
5Vingt mille lieues sous les mers4
6Le Château de ma mère2

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

À toi : lis les deux tables

À toi de jouer

À toi : lis les deux tables

3 questions
Essayez : vos réponses sont notées ici puis oubliées. Connectez-vous si vous voulez conserver votre score et reprendre là où vous en étiez.Se connecter pour conserver mon score

Tes réponses sont corrigées ici et ne sont pas conservées. Un compte garde tes résultats.

À toi : relier à la main

Code: sql
-- Chercher à la main : d'abord le numéro de l'auteur...
SELECT id, nom FROM auteurs WHERE nom = 'Marcel Pagnol';

-- ... puis les livres qui portent ce numéro.
SELECT titre FROM livres WHERE auteur_id = 2;

-- Pagnol change d'écriture ? On corrige une seule ligne, dans auteurs.

La leçon continue

10 parties de plus de cette leçon se trouvent dans le cours complet, avec les exercices et la vérification finale. Un compte te donne tout.