Adloun

mathématiques appliquées (ECG 2e année) · Chapitre 13 · Exercice

Ce que la jointure fait disparaître

Bases de données et travaux pratiques · Interroger une base · niveau 3 (difficile)

É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 JOIN ne 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.

Exercices semblables

Le cours du chapitre · Tous les exercices du chapitre