Adloun

mathématiques appliquées (ECG 2e année) · Chapitre 13 · Application directe du cours

Choisir une clef primaire

Bases de données et travaux pratiques · Vocabulaire du modèle relationnel · niveau 1 (application)

Énoncé

La table produit est la suivante.

idlibelleprix
1Stylo2
2Cahier3
3Stylo5

Quel attribut peut servir de clef primaire ? Justifier pour les trois.

Corrigé

Le critère. Une clef primaire doit identifier chaque ligne de façon unique : deux enregistrements distincts ne peuvent pas y porter la même valeur.

libelle ne convient pas. La valeur « Stylo » apparaît deux fois, aux lignes et — deux stylos différents, l'un à et l'autre à . Une requête WHERE libelle = 'Stylo' rendrait deux lignes : le libellé ne désigne pas un produit.

prix ne convient pas. Ici ses trois valeurs , , se trouvent être distinctes, mais rien ne le garantit : deux produits peuvent parfaitement coûter le même prix, et le prochain article inséré à euros ferait tomber la règle. Une clef se choisit pour ce qu'elle garantit, jamais pour ce que le contenu actuel permet.

id convient. Ses valeurs , , sont distinctes, et c'est un identifiant créé précisément pour l'être. On le déclare ainsi :


CREATE TABLE produit (
    id       INTEGER PRIMARY KEY,
    libelle  TEXT,
    prix     INTEGER
);

Ce que la déclaration change. La base refusera désormais toute insertion d'une ligne portant un id déjà présent. C'est une garantie active, pas une simple annotation.

Exercices semblables

Le cours du chapitre · Tous les exercices du chapitre