Ce que la jointure fait disparaître
Exercice · niveau 3 (difficile) · mathématiques appliquées (ECG 2e année), chapitre 13 — Bases de données et travaux pratiques · Interroger une base
Énoncé
La table client a trois lignes, d'identifiants , et . La table commande en a quatre, de client_id valant , , et . Combien de lignes rend leur jointure interne sur l'égalité des identifiants ? Qu'est-ce qui manque, et pourquoi ?
Corrigé
Chaque commande s'apparie au plus une fois. client.id est la clef primaire : aucune valeur ne s'y répète. Une ligne de commande trouve donc zéro ou un partenaire, jamais deux.
Ligne par ligne. Les client_id valant , et trouvent chacun leur client — trois appariements. Le client_id valant n'en trouve aucun, puisqu'il n'existe pas de client .
Le compte. La jointure rend donc trois lignes.
Ce qui manque, et pourquoi. Deux choses, pour deux raisons opposées :
- la commande de
client_idégal à est une ligne orpheline — sa clef étrangère désigne un enregistrement absent, ce que la base aurait dû interdire ; - le client n'apparaît pas non plus : il n'a passé aucune commande, et
INNER JOINne garde que ce qui s'apparie des deux côtés.
Le point à retenir. Compter les lignes du résultat est un audit gratuit : si la jointure rend moins de lignes que la table commande, c'est qu'il existe des orphelines. Et conclure « il n'y a que deux clients » à la lecture du résultat serait faux : le troisième existe, il est simplement inactif.
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.