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
  • Exercices
  • Introduction
  • Commandes de bases
  • Langage de définition de données (LDD)
  • Langage de manipulation de données (LMD)
  • Types de données
  • Exercice
  • Présentation
  • Calcul relationnel
  • Algèbre relationnelle
  • Division relationnelle
  • Relation
  • Fonction
  • Application
  • Injection
  • Surjection
  • Bijection
  • Association
  • Exemples
  • Dépendances fonctionnelles
  • Décomposition de relations
  • Inférence logique
  • Normalisation
  • Aux pays des bières
  • Modélisation
  • Exercices
  • Liste des projets
  • Aux pays des bières
  • Au Tournoi des six nations
  • Salles de concerts
  • Généralités
  • Langage SQL
  • Modèle relationnel
  • Généralités
  • SQL
  • Algèbre relationnelle
    • Catalogue de films
    • QCM
  • Synthèse
Index

Archives

  • Site Web
  • Sources reStructuredText
  • EniBook 1.618033988
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

Algèbre relationnelle

Catalogue de films

Création de tables

CREATE TABLE catalogues (
                         diffuseur varchar(20),
                         film varchar(20)
                        );
CREATE TABLE abonnements (
                          personne varchar(20),
                          diffuseur varchar(20)
                         );
CREATE TABLE preferences (
                          personne varchar(20),
                          film varchar(20)
                         );

Insertion d'éléments dans les tables

INSERT INTO catalogues (diffuseur, film) VALUES('Gaumont','Le magnifique');
INSERT INTO catalogues (diffuseur, film) VALUES('Gaumont','Le gigolo');
-- INSERT INTO catalogues (diffuseur, film) VALUES('Gaumont','L’as des as');
INSERT INTO catalogues (diffuseur, film) VALUES('NetFilm','Le magnifique');
INSERT INTO catalogues (diffuseur, film) VALUES('NetFilm','Le marginal');
INSERT INTO catalogues (diffuseur, film) VALUES('NetFilm','Le professionnel');
INSERT INTO catalogues (diffuseur, film) VALUES('BebelFilms','Le gigolo');
INSERT INTO catalogues (diffuseur, film) VALUES('BebelFilms','Le magnifique');
INSERT INTO catalogues (diffuseur, film) VALUES('BebelFilms','Le marginal');
INSERT INTO catalogues (diffuseur, film) VALUES('BebelFilms','L’as des as');
INSERT INTO catalogues (diffuseur, film) VALUES('BebelFilms','Le professionnel');
--INSERT INTO catalogues (diffuseur, film) VALUES('Gaumont','L’homme de Rio');

INSERT INTO abonnements(personne,diffuseur)VALUES('Jean','BebelFilms');
INSERT INTO abonnements(personne,diffuseur)VALUES('Jean','Gaumont');
-- INSERT INTO abonnements(personne,diffuseur)VALUES('Jean','NetFilm');
INSERT INTO abonnements(personne,diffuseur)VALUES('Anne','BebelFilms');
INSERT INTO abonnements(personne,diffuseur)VALUES('Anne','Gaumont');
INSERT INTO abonnements(personne,diffuseur)VALUES('Pierre','BebelFilms');

INSERT INTO preferences(personne,film) VALUES('Jean','Le magnifique');
INSERT INTO preferences(personne,film) VALUES('Jean','Le marginal');
INSERT INTO preferences(personne,film) VALUES('Anne','Le magnifique');
INSERT INTO preferences(personne,film) VALUES('Anne','Le gigolo');
INSERT INTO preferences(personne,film) VALUES('Anne','L’as des as');
INSERT INTO preferences(personne,film) VALUES('Jean','Le professionnel');
INSERT INTO preferences(personne,film) VALUES('Jean','L’as des as');
INSERT INTO preferences(personne,film) VALUES('Jean','Le gigolo');
-- INSERT INTO preferences(personne,film) VALUES('Anne','L’homme de Rio');

Répondre aux questions suivantes :

  1. 3/3 Expressions (calcul relationnel, arbre de requêtes)

    A partir de l’expression algbébrique suivante :

    \(R = \Pi_{(p.personne)}(\Join_{[p.personne=a.personne]}(\sigma_{[p.film="Le \; magnifique"]}(preferences \; p) ,abonnements \; a))\)

    trouvez les expressions correspondantes :

    1. En calcul relationnel de n-uplet (TRC)
      • Question
      • Solution
      Votre réponse :
      Texte : inputlines809.txt

      Zone de saisie de texte

      ClavierAction
      F1Afficher une aide technique
      F2Afficher une aide pédagogique
      Ctrl-ATout sélectionner
      Ctrl-CCopier la sélection dans le presse-papier
      Ctrl-VCopier le presse-papier dans la sélection
      Ctrl-XCouper la sélection et la copier dans le presse-papier
      Ctrl-ZAnnuler la modification
      Maj-Ctrl-ZRétablir la modification

      MenuAction
      Ré-initialiser les sorties
      Faire apparaître le menu d'aide
      Valider la zone de saisie
      Initialiser la zone de saisie
      Charger le contenu d'un fichier dans la zone de saisie
      Sauvegarder le contenu de la zone de saisie dans un fichier
      Imprimer le contenu de la zone de saisie
      Une solution possible :

      \(R=\{ p.personne | \; preferences(p) \; , \; abonnements(a)\) \(\; \; \; \; \; \; \; \; \; \; \; \land \; p.personne=a.personne \land p.film="Le \; magnifique" \; \}\)

    2. En l'exprimant par une phrase en français
      • Question
      • Solution
      Votre réponse :
      Texte : inputlines813.txt

      Zone de saisie de texte

      ClavierAction
      F1Afficher une aide technique
      F2Afficher une aide pédagogique
      Ctrl-ATout sélectionner
      Ctrl-CCopier la sélection dans le presse-papier
      Ctrl-VCopier le presse-papier dans la sélection
      Ctrl-XCouper la sélection et la copier dans le presse-papier
      Ctrl-ZAnnuler la modification
      Maj-Ctrl-ZRétablir la modification

      MenuAction
      Ré-initialiser les sorties
      Faire apparaître le menu d'aide
      Valider la zone de saisie
      Initialiser la zone de saisie
      Charger le contenu d'un fichier dans la zone de saisie
      Sauvegarder le contenu de la zone de saisie dans un fichier
      Imprimer le contenu de la zone de saisie
      Une solution possible :

      trouver le nom des abonnés qui ont dans leurs préférences le film « Le magnifique »

    3. En représentant l'arbre de requêtes correspondant
      • Question
      • Solution
      Votre réponse :
      Arbre de requêtes : graph817.json

      Tables

      Opérateurs unaires

      Opérateurs binaires

      Vue d'ensemble
      Une solution possible :
      _images/films-1-3.png
  2. 3/3 Jointures (SQL, Algèbre, Arbre de requêtes)

    Rechercher le nom des films préférés de Jean qui sont dans les catalogues des diffuseurs auxquels il est abonné.

    1. En formulant une requête SQL
      • Question
      • Solution
      Votre réponse :
      sql : films.sql
      
          
      >
      Output
      
                      

      Interpréteur

      MenuAction
      Ré-initialiser les sorties
      Faire apparaître le menu d'aide
      Interpréter le programme

      Editeur

      MenuRaccouciAction
      Ctrl+N Initialiser l'éditeur
      Ctrl+O Charger le contenu d'un fichier dans l'éditeur
      Ctrl+S Sauvegarder le contenu de l'éditeur dans un fichier
      Ctrl+P Imprimer le contenu de l'éditeur
      Ctrl+Z Annuler la dernière modification
      Maj+Ctrl+Z Rétablir la modification précedente
      Ctrl+F Chercher une expression dans l'éditeur
      Maj+Ctrl+F Chercher et remplacer une expression par une autre
      F10 Ouvrir une documentation du langage

      RaccourciAction
      F1 Afficher cette aide
      Tab Indenter la sélection
      Maj+Tab Désindenter la sélection
      Ctrl+A Sélectionner le contenu de l'éditeur
      Ctrl+C Copier la sélection dans le presse-papier
      Ctrl+V Remplacer la sélection par le contenu du presse-papier
      Ctrl+X Supprimer la sélection et la copier dans le presse-papier
      Maj+Ctrl+R Chercher et remplacer une expression par une autre dans tout l'éditeur
      Une solution possible :
      SELECT DISTINCT p.film
      FROM preferences p  INNER JOIN abonnements a INNER JOIN  catalogues c
      ON ( p.personne=a.personne AND a.diffuseur=c.diffuseur AND  c.film=p.film)
      WHERE p.personne='Jean';
      
    2. En trouvant une expression algébrique optimisée correspondante
      • Question
      • Solution
      Votre réponse :
      Texte : inputlines826.txt

      Zone de saisie de texte

      ClavierAction
      F1Afficher une aide technique
      F2Afficher une aide pédagogique
      Ctrl-ATout sélectionner
      Ctrl-CCopier la sélection dans le presse-papier
      Ctrl-VCopier le presse-papier dans la sélection
      Ctrl-XCouper la sélection et la copier dans le presse-papier
      Ctrl-ZAnnuler la modification
      Maj-Ctrl-ZRétablir la modification

      MenuAction
      Ré-initialiser les sorties
      Faire apparaître le menu d'aide
      Valider la zone de saisie
      Initialiser la zone de saisie
      Charger le contenu d'un fichier dans la zone de saisie
      Sauvegarder le contenu de la zone de saisie dans un fichier
      Imprimer le contenu de la zone de saisie
      Une solution possible :

      \(R_1 = \sigma_{[personne="Jean" ]}(preferences)\)

      \(R_2 = \Join_{[R_1.film=c.film]}(R_1,catalogues \; c)\)

      \(R_3 = \Join_{[R_2.diffuseur=a.diffuseur]}(R_2) ,abonnements \; a)\)

      \(R = \Pi_{film}(R_3)\)

    3. En construisant un arbre de requêtes optimisé correspondant
      • Question
      • Solution
      Votre réponse :
      Arbre de requêtes : graph830.json

      Tables

      Opérateurs unaires

      Opérateurs binaires

      Vue d'ensemble
      Une solution possible :
      _images/films-2-3.png
  3. 3/3 Opération ensembliste, jointure

    Rechercher le titre des films proposés par « NetFilm » qui ne sont pas dans les préférences de « Jean » qui est abonné chez ce diffuseur

    1. En trouvant une expression algébrique optimisée correspondante
      • Question
      • Solution
      Votre réponse :
      Texte : inputlines835.txt

      Zone de saisie de texte

      ClavierAction
      F1Afficher une aide technique
      F2Afficher une aide pédagogique
      Ctrl-ATout sélectionner
      Ctrl-CCopier la sélection dans le presse-papier
      Ctrl-VCopier le presse-papier dans la sélection
      Ctrl-XCouper la sélection et la copier dans le presse-papier
      Ctrl-ZAnnuler la modification
      Maj-Ctrl-ZRétablir la modification

      MenuAction
      Ré-initialiser les sorties
      Faire apparaître le menu d'aide
      Valider la zone de saisie
      Initialiser la zone de saisie
      Charger le contenu d'un fichier dans la zone de saisie
      Sauvegarder le contenu de la zone de saisie dans un fichier
      Imprimer le contenu de la zone de saisie
      Une solution possible :

      \(R_1 = \sigma_{[diffuseur='NetFilm']}(catalogues)\)

      \(R_2 = \Pi_{(film)}(R_1)\)

      \(R_3 = \sigma_{[diffuseur='NetFilm']}(abonnements)\)

      \(R_4 = \sigma_{[personne='Jean']}(preferences)\)

      \(R_5 = \Join_{[R_3.personne=R_4.personne]}(R_3,R_4)\)

      \(R_6 = \Pi_{(film)}(R_5)\)

      \(R = \setminus(R_2,R_6)\)

    2. En construisant un arbre de requêtes optimisé correspondant
      • Question
      • Solution
      Votre réponse :
      Arbre de requêtes : graph839.json

      Tables

      Opérateurs unaires

      Opérateurs binaires

      Vue d'ensemble
      Une solution possible :
      _images/films-3-2.png
    3. En formulant une requête SQL
      • Question
      • Solution
      Votre réponse :
      sql : films.sql
      
          
      >
      Output
      
                      

      Interpréteur

      MenuAction
      Ré-initialiser les sorties
      Faire apparaître le menu d'aide
      Interpréter le programme

      Editeur

      MenuRaccouciAction
      Ctrl+N Initialiser l'éditeur
      Ctrl+O Charger le contenu d'un fichier dans l'éditeur
      Ctrl+S Sauvegarder le contenu de l'éditeur dans un fichier
      Ctrl+P Imprimer le contenu de l'éditeur
      Ctrl+Z Annuler la dernière modification
      Maj+Ctrl+Z Rétablir la modification précedente
      Ctrl+F Chercher une expression dans l'éditeur
      Maj+Ctrl+F Chercher et remplacer une expression par une autre
      F10 Ouvrir une documentation du langage

      RaccourciAction
      F1 Afficher cette aide
      Tab Indenter la sélection
      Maj+Tab Désindenter la sélection
      Ctrl+A Sélectionner le contenu de l'éditeur
      Ctrl+C Copier la sélection dans le presse-papier
      Ctrl+V Remplacer la sélection par le contenu du presse-papier
      Ctrl+X Supprimer la sélection et la copier dans le presse-papier
      Maj+Ctrl+R Chercher et remplacer une expression par une autre dans tout l'éditeur
      Une solution possible :
      SELECT film  FROM catalogues WHERE diffuseur='NetFilm'
      EXCEPT
      SELECT film FROM abonnements a INNER JOIN preferences p ON (a.personne=p.personne )
      WHERE a.diffuseur='NetFilm' AND p.personne='Jean';
      
  4. 3/3 Division relationnelle (1/2)

    Exprimer le calcul relationnel suivant :

    \(R=\{ c.diffuseur\; | \; \forall p.film \in preferences(p) \; , \; (c.diffuseur,p.film) \in catalogues(c) \}\)

    1. En formulant une requête SQL
      • Question
      • Solution
      Votre réponse :
      sql : films.sql
      
          
      >
      Output
      
                      

      Interpréteur

      MenuAction
      Ré-initialiser les sorties
      Faire apparaître le menu d'aide
      Interpréter le programme

      Editeur

      MenuRaccouciAction
      Ctrl+N Initialiser l'éditeur
      Ctrl+O Charger le contenu d'un fichier dans l'éditeur
      Ctrl+S Sauvegarder le contenu de l'éditeur dans un fichier
      Ctrl+P Imprimer le contenu de l'éditeur
      Ctrl+Z Annuler la dernière modification
      Maj+Ctrl+Z Rétablir la modification précedente
      Ctrl+F Chercher une expression dans l'éditeur
      Maj+Ctrl+F Chercher et remplacer une expression par une autre
      F10 Ouvrir une documentation du langage

      RaccourciAction
      F1 Afficher cette aide
      Tab Indenter la sélection
      Maj+Tab Désindenter la sélection
      Ctrl+A Sélectionner le contenu de l'éditeur
      Ctrl+C Copier la sélection dans le presse-papier
      Ctrl+V Remplacer la sélection par le contenu du presse-papier
      Ctrl+X Supprimer la sélection et la copier dans le presse-papier
      Maj+Ctrl+R Chercher et remplacer une expression par une autre dans tout l'éditeur
      Une solution possible :
      SELECT DISTINCT diffuseur
      FROM catalogues c1
      WHERE NOT EXISTS (
                        SELECT p.film
                        FROM preferences p
                        EXCEPT
                        SELECT c2.film
                        FROM catalogues c2
                         WHERE c1.diffuseur=c2.diffuseur
      );
      
    2. En construisant un arbre de requêtes correspondant
      • Question
      • Solution
      Votre réponse :
      Arbre de requêtes : graph852.json

      Tables

      Opérateurs unaires

      Opérateurs binaires

      Vue d'ensemble
      Une solution possible :
      _images/films-4-2.png
    3. par une formulation en langage naturel
      • Question
      • Solution
      Votre réponse :
      Texte : inputlines856.txt

      Zone de saisie de texte

      ClavierAction
      F1Afficher une aide technique
      F2Afficher une aide pédagogique
      Ctrl-ATout sélectionner
      Ctrl-CCopier la sélection dans le presse-papier
      Ctrl-VCopier le presse-papier dans la sélection
      Ctrl-XCouper la sélection et la copier dans le presse-papier
      Ctrl-ZAnnuler la modification
      Maj-Ctrl-ZRétablir la modification

      MenuAction
      Ré-initialiser les sorties
      Faire apparaître le menu d'aide
      Valider la zone de saisie
      Initialiser la zone de saisie
      Charger le contenu d'un fichier dans la zone de saisie
      Sauvegarder le contenu de la zone de saisie dans un fichier
      Imprimer le contenu de la zone de saisie
      Une solution possible :

      trouver le nom des diffuseurs qui ont dans leur catalogue tous les films préférés des personnes

  5. 3/3 Division relationnelle (2/2)

    A partir de la requête SQL suivante :

    CREATE VIEW R1 AS
    SELECT diffuseur FROM catalogues;
    CREATE VIEW R2 AS
    SELECT * FROM R1,preferences WHERE personne='Jean';
    CREATE VIEW R3 AS
    SELECT diffuseur,film FROM R2
    EXCEPT
    SELECT * FROM catalogues;
    CREATE VIEW R4 AS
    SELECT diffuseur FROM R3;
    CREATE VIEW R5 AS
    SELECT * FROM R1 EXCEPT SELECT * FROM R4;
    
    1. Ecrire en une seule requête SQL cette recherche
      • Question
      • Solution
      Votre réponse :
      sql : films.sql
      
          
      >
      Output
      
                      

      Interpréteur

      MenuAction
      Ré-initialiser les sorties
      Faire apparaître le menu d'aide
      Interpréter le programme

      Editeur

      MenuRaccouciAction
      Ctrl+N Initialiser l'éditeur
      Ctrl+O Charger le contenu d'un fichier dans l'éditeur
      Ctrl+S Sauvegarder le contenu de l'éditeur dans un fichier
      Ctrl+P Imprimer le contenu de l'éditeur
      Ctrl+Z Annuler la dernière modification
      Maj+Ctrl+Z Rétablir la modification précedente
      Ctrl+F Chercher une expression dans l'éditeur
      Maj+Ctrl+F Chercher et remplacer une expression par une autre
      F10 Ouvrir une documentation du langage

      RaccourciAction
      F1 Afficher cette aide
      Tab Indenter la sélection
      Maj+Tab Désindenter la sélection
      Ctrl+A Sélectionner le contenu de l'éditeur
      Ctrl+C Copier la sélection dans le presse-papier
      Ctrl+V Remplacer la sélection par le contenu du presse-papier
      Ctrl+X Supprimer la sélection et la copier dans le presse-papier
      Maj+Ctrl+R Chercher et remplacer une expression par une autre dans tout l'éditeur
      Une solution possible :
      SELECT DISTINCT diffuseur
      FROM catalogues c1
      WHERE NOT EXISTS (
                        SELECT p.film
                        FROM preferences p WHERE p.personne='Jean'
                        EXCEPT
                        SELECT c2.film
                        FROM catalogues c2
                         WHERE c1.diffuseur=c2.diffuseur
      );
      
    2. Décrire simplement, en une phrase, ce que permettra de rechercher la vue :code:`R5`
      • Question
      • Solution
      Votre réponse :
      Texte : inputlines865.txt

      Zone de saisie de texte

      ClavierAction
      F1Afficher une aide technique
      F2Afficher une aide pédagogique
      Ctrl-ATout sélectionner
      Ctrl-CCopier la sélection dans le presse-papier
      Ctrl-VCopier le presse-papier dans la sélection
      Ctrl-XCouper la sélection et la copier dans le presse-papier
      Ctrl-ZAnnuler la modification
      Maj-Ctrl-ZRétablir la modification

      MenuAction
      Ré-initialiser les sorties
      Faire apparaître le menu d'aide
      Valider la zone de saisie
      Initialiser la zone de saisie
      Charger le contenu d'un fichier dans la zone de saisie
      Sauvegarder le contenu de la zone de saisie dans un fichier
      Imprimer le contenu de la zone de saisie
      Une solution possible :

      trouver le nom des diffuseurs qui ont dans leur catalogue tous les films préférés de « Jean »

    3. En construisant un arbre de requêtes correspondant
      • Question
      • Solution
      Votre réponse :
      Arbre de requêtes : graph869.json

      Tables

      Opérateurs unaires

      Opérateurs binaires

      Vue d'ensemble
      Une solution possible :
      _images/films-5-3.png

QCM

4/4 Algèbre relationnelle
  1. Expression algèbrique

    On considère les instances de tables

    R
    a b
    1 2
    3 4
    1 6
    7 8
    S
    a b c
    1 2 3
    1 6 7
    1 2 4
    5 6 7
    L’expression algébrique :
    • \(\Pi_{(c)}(\Join_{[R.A=S.A \; \land \; R.B=S.B]}(R,S))\)

    donnera l’ensemble des valeurs de \(c\) :

    1. \(c : (3,7,4,7)\)
    2. \(c : (3,7,4)\)
    3. \(c : (3,7)\)
    4. \(c : (3,4)\)
    /01000/:vous avez 2 bonnes valeurs
    /00100/:vous avez 2 bonnes valeurs
    /00010/:vous avez 2 bonnes valeurs
    /00001/:il y en a moins de 4 valeurs

    gagné

  2. Groupements

    Soit l’instance de relation R suivante :

    R
    A B C D
    1 3 2 1
    2 1 3 2
    2 2 1 3
    3 2 2 2

    La requête SQL SELECT B,SUM(A+C+D) FROM R GROUP BY B;

    donnera comme résultat l’ensemble des éléments :

    1. \(\{(1,6),(2,12),(3,6)\}\)
    2. \(\{(1,6),(2,13),(3,5)\}\)
    3. \(\{(1,7),(2,13),(3,4)\}\)
    4. \(\{(1,7),(2,12),(3,5)\}\)
  3. Expression algèbrique

    On considère les instances de tables

    R
    a b c
    1 2 1
    1 2 3
    3 1 2
    2 1 3
    S
    a b
    1 2
    1 3
    2 1
    3 1

    Le résultat de la requête :

    • \(Q=\cap(\Pi_{(A,B)}(\sigma_{[C!=3]}(R)),S)\)

    sera l’ensemble : :

    1. \(Q=\{(2,1),(2,3)\}\)
    2. \(Q=\{(2,3),(1,2)\}\)
    3. \(Q=\{(1,2),(2,1)\}\)
    4. \(Q=\{(1,2),(3,1)\}\)
  4. Opérateurs

    Les opérateurs SELECT, FROM, WHERE correspondent respectivement aux opérateurs de l’algèbre relationnelle suivants :

    1. projection, produit cartésien, restriction
    2. projection, jointure, restriction
    3. restriction, projection, jointure
    4. projection, produit cartésien,jointure
QCM Radio Checkbox Total
Nombre de questions
Réponses non enregistrées
Réponses enregistrées
Taux d'enregistrement
Réponses enregistrées non validées
Réponses enregistrées validées
Taux de réussite partiel
Taux de réussite total
 
Systèmes d'Information : Algèbre relationnelle, 13 avr. 2023.