Bases des bases de données

La colonne x de la table R contient 4 lignes de valeurs 1, 1, 2, 3, et la colonne x de la table S contient 4 lignes de valeurs 1, 1, 2, 4. Combien de lignes renvoie SELECT * FROM R INNER JOIN S ON R.x = S.x ?

  1. A2 lignes
  2. B3 lignes
  3. C5 lignes
Afficher la réponse et l'explication

Réponse : C. 5 lignes

Dans une jointure, chaque combinaison de lignes qui satisfait la condition devient une ligne du résultat. Pour x = 1, toutes les combinaisons des 2 lignes de R et des 2 lignes de S satisfont la condition, ce qui donne 2 × 2 = 4 lignes ; pour x = 2, il y a 1 × 1 = 1 ligne. Le 3 de R et le 4 de S n'ont pas de partenaire et n'apparaissent donc pas dans la jointure interne. Le total est de 4 + 1 = 5 lignes. 2 lignes correspond au cas où l'on ne produirait qu'une ligne par valeur correspondante (1 et 2). 3 lignes correspond au cas où l'on vérifie seulement, pour chaque ligne de R, si S contient une valeur correspondante (une requête comme SELECT * FROM R WHERE x IN (SELECT x FROM S)). Le produit cartésien sans condition donnerait 4 × 4 = 16 lignes. Attention : des valeurs en double dans la colonne de jointure multiplient le nombre de lignes du résultat.

S'entraîner sur ce thème Retour au thème

Autres questions sur Bases des bases de données

  1. Une table Client(IdClient, Nom) contient 4 lignes : (C1, Aoki), (C2, Inoue), (C3, Ueda), (C4, Eto). Une table Commande(IdCommande, IdClient, Montant) contient 5 lignes : (O1, C1, 3000), (O2, C2, 8000), (O3, C1, 6000), (O4, C3, 2000), (O5, C2, 9000). Combien de lignes renvoie SELECT Nom FROM Client WHERE IdClient IN (SELECT IdClient FROM Commande WHERE Montant > 5000) ?
  2. À partir d'une table Client(IdClient, Nom) et d'une table Commande(IdCommande, IdClient, Montant), on veut obtenir le nom des clients qui n'ont jamais passé de commande. Quelle instruction SQL est correcte ?
  3. Quelle proposition décrit correctement une vue (view) dans une base de données relationnelle ?
  4. Quel est le but principal de la normalisation des tables d'une base de données relationnelle ?
  5. La clé primaire d'une table Commande(NumCommande, NumArticle, Quantite, NumClient, NomClient) est {NumCommande, NumArticle}, et ses dépendances fonctionnelles sont {NumCommande, NumArticle} → Quantite, NumCommande → NumClient et NumClient → NomClient. Quel est le résultat correct de la normalisation de cette table jusqu'à la troisième forme normale (3NF) ?