Adloun

Quel attribut peut être clef primaire ?

Exercice d'entraînement · niveau 2 · mathématiques appliquées (ECG 2e année), chapitre 13 — Bases de données et travaux pratiques · Modèle relationnel et schéma

Énoncé

La table etudiant contient les lignes suivantes.

numnomville
101MartinLyon
102PetitNantes
103MartinLyon

Dire quel attribut peut servir de clef primaire, et pourquoi les deux autres ne le peuvent pas.

Corrigé

Le critère. Une clef primaire est un attribut qui identifie chaque ligne de façon unique : deux enregistrements distincts ne peuvent jamais y porter la même valeur.

L'attribut nom ne convient pas. La valeur « Martin » apparaît deux fois, aux lignes et . Si l'on déclarait nom comme clef primaire, la base refuserait la seconde de ces lignes — et surtout, une requête WHERE nom = 'Martin' rendrait deux enregistrements là où l'on en attend un.

L'attribut ville ne convient pas non plus. « Lyon » apparaît également deux fois. L'argument est le même, et il serait valable même si les trois villes étaient aujourd'hui distinctes : rien n'empêcherait un futur étudiant d'habiter une ville déjà présente. On choisit une clef pour ce qu'elle garantit, pas pour ce que le contenu actuel permet.

L'attribut num convient. Ses trois valeurs , , sont distinctes, et c'est un identifiant attribué précisément pour l'être. On le déclare ainsi :


CREATE TABLE etudiant (
    num    INTEGER PRIMARY KEY,
    nom    TEXT,
    ville  TEXT
);

Ce que la clef primaire apporte ensuite. C'est elle qu'une clef étrangère d'une autre table pourra référencer — par exemple une table inscription portant un champ etudiant_num. Sans identifiant unique, ce lien serait ambigu : rattacher une inscription à « Martin » ne dirait pas lequel des deux.

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.