Adloun

Une table de plus, et son lien

Exercice · niveau 2 · mathématiques appliquées (ECG 2e année), chapitre 13 — Bases de données et travaux pratiques · Créer et modifier une base

Énoncé

Écrire le schéma d'une table livraison : un identifiant entier en clef primaire, l'identifiant entier de la commande livrée en clef étrangère vers commande, et un transporteur en texte. Puis insérer la livraison de la commande par « Rapido », et supprimer toutes les livraisons de ce transporteur.

Corrigé


CREATE TABLE livraison (
    id            INTEGER PRIMARY KEY,
    commande_id   INTEGER,
    transporteur  TEXT,
    FOREIGN KEY (commande_id) REFERENCES commande(id)
);

INSERT INTO livraison VALUES (1, 10, 'Rapido');

DELETE FROM livraison
WHERE transporteur = 'Rapido';

Deux domaines, pas trois. Le programme s'en tient à INTEGER et TEXT : l'identifiant et la commande sont des entiers, le transporteur une chaîne.

La clef étrangère n'est pas une colonne de plus. commande_id est déclarée comme champ ordinaire ; la ligne FOREIGN KEY ne fait que déclarer le lien vers commande(id). C'est ce lien que suivra plus tard une jointure.

L'ordre des valeurs. VALUES (1, 10, 'Rapido') remplit les champs dans l'ordre où le schéma les a déclarés. Intervertir et passerait sans erreur et rendrait la base fausse.

Le piège du DELETE. Sans la clause WHERE, DELETE FROM livraison; viderait la table entière, sans confirmation ni retour en arrière.

Le point à retenir. Le schéma se déclare une fois, avant toute insertion : il décrit la forme des données, pas leur contenu. Et la clef étrangère est le fil qu'on tend au moment de la création, pour pouvoir tirer dessus au moment de la lecture.

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.