Fichier de rejeu Close

Indication Close

A propos de... Close

Commentaire Close

Systèmes d'Information

  • Notions mathématiques
  • Calcul relationnel
  • Algèbre relationnelle
  • Langage de requêtes
  • Arbre de requêtes
  • QCM
  • Introduction
  • Commandes de bases
  • Langage de définition de données
  • Types de données
  • Requêtes
  • Présentation
  • Calcul relationnel
  • Algèbre relationnelle
  • Division relationnelle
  • Dépendances fonctionnelles
  • Décomposition de relations
  • Inférence logique
  • Normalisation
  • Aux pays des bières
  • Modélisation
  • Exercices
  • Présentation
  • Aux pays des bières
  • Salles de concerts
  • Définitions
  • Langage SQL
  • Modèle relationnel
  • Films
  • Repas
  • Repas
Index

Téléchargements

  • Site
  • Sources
  • EniBook
logo

Crédits

© Your Copyright

Aide

En-tête

MenuContenu
Sommaire,
Téléchargements
Aide sur les outils

Pied de page

ChevronAction
Aller en haut de la page courante
Aller en bas de la page courante
Passer à la page précédente
Passer à la page suivante

Division relationnelle

1/1 Au Tournoi des Six Nations : division relationnelle
  1. GROUP BY, HAVING, COUNT
    • Question
    • Solution

    Construire un arbre de requêtes répondant à la question :

    • \(Q_1\) : « Rechercher le nom des joueurs qui ont été sélectionnés pour tous les matchs de leur équipe ».
    Votre réponse :
    Arbre de requêtes : graph199.json

    Tables

    Opérateurs unaires

    Opérateurs binaires

    Vue d'ensemble
    id_equipenom
    FRALopez
    Une solution possible :

    On peut mettre en œuvre la division relationnelle pour récupérer les noms des joueurs qui ont été sélectionnées pour tous les matchs de leur équipe en récupérant d’abord les joueurs ayant été sélectionnés :

    • \(NJ=\Join_{[]}(joueurs,selections)\)

    puis en les regroupant par leur nom et leur identifiant d’équipe :

    • GROUP BY id_equipe,nom

    puis en vérifiant (clause HAVING) que le nombre de matchs (id_match) des joueurs sélectionnés est égal au nombre total de matchs de leur équipe :

    COUNT(id_match) = (
                       SELECT COUNT(id_match)
                       FROM matchs
                       WHERE id_locaux=id_equipe OR id_visiteurs=id_equipe
                      )
    

    Ecriture en algèbre relationnelle :

    • \(Q = G_{[COUNT(id\_match) = (SELECT \; COUNT(id\_match) \; FROM \; matchs \; WHERE \; id\_locaux=id\_equipe \; OR \; id\_visiteurs=id\_equipe)]}^{(id_equipe,nom)}(\Join_{[]}(joueurs,selections))\).

    Le symbole \(G\) représente l’opérateur de regroupement appliqué sur la table services :

    • en exposant : attributs de regroupement (GROUP BY)
    • en indice : critère de restriction (clause HAVING) sur les regroupements.
    Arbre de requêtes : sixnations-11-3.json

    Tables

    Opérateurs unaires

    Opérateurs binaires

    Vue d'ensemble
    id_equipenom
    FRALopez
 
Systèmes d'Information : Division relationnelle, 12 févr. 2018.