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
    • Modèle de données
    • Recherches d’informations
      • Sur une table
      • Jointures
      • Opérations ensemblistes
      • Division Relationnelle
    • Arbres de requêtes
      • Sur une table
      • Jointures
      • Opérations ensemblistes
  • Généralités
  • Langage SQL
  • Modèle relationnel
  • Généralités
  • SQL
  • Algèbre relationnelle
  • 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

Salles de Concerts

Modèle de données

Représentation, en UML, du modèle de données à étudier.

Diagramme de classes du modèle de données.

_images/concerts_Class_diagram.png

Représentation, en SQL, du modèle de données à étudier.

Création des tables du modèle de données.

CREATE TABLE salle (salle_id SERIAL PRIMARY KEY,
                    nom      VARCHAR(20),
                    capacite INTEGER DEFAULT 100
);

CREATE TABLE spectacle (spec_id  SERIAL PRIMARY KEY,
                        titre    VARCHAR(20),
                        duree    TIME,
                        chanteur VARCHAR(20),
                        salle_id  INTEGER,
                        FOREIGN KEY (salle_id) REFERENCES salle
);

CREATE TABLE concert (concert_id SERIAL  PRIMARY KEY,
                      jour       DATE,
                      heure      TIME,
                      spec_id  INTEGER,
                      FOREIGN KEY (spec_id) REFERENCES spectacle
);

CREATE TABLE billet (billet_id  SERIAL  PRIMARY KEY,
                     concert_id INTEGER NOT NULL,
                     prix       SMALLINT,
                     FOREIGN KEY (concert_id) REFERENCES concert

);

CREATE TABLE vente(vente_id SERIAL  PRIMARY KEY,
                   jour     DATE,
                   paiement VARCHAR(10),
                   billet_id INTEGER NOT NULL UNIQUE,
                   FOREIGN KEY (billet_id) REFERENCES billet

);

Insertion d'informations dans une base de données SQLite.

INSERT INTO salle(nom,capacite) VALUES ('vauban',100);
INSERT INTO salle(nom,capacite) VALUES ('quartz',500);

INSERT INTO spectacle(titre,duree,chanteur,salle_id) VALUES ('show must go on','04:00:00','laStar',1);
INSERT INTO spectacle(titre,duree,chanteur,salle_id) VALUES ('show must go on','03:00:00','laStar',2);
INSERT INTO spectacle(titre,duree,chanteur,salle_id) VALUES ('show must go out','02:30:00','TheStar',1);
INSERT INTO spectacle(titre,duree,chanteur,salle_id) VALUES ('show must go in','03:45:00','TheBigStar',2);

DELETE FROM spectacle WHERE spec_id=5;

INSERT INTO concert(jour,heure,spec_id) VALUES ('2015-12-24', '21:00:00',1);
INSERT INTO concert(jour,heure,spec_id) VALUES ('2015-12-31', '21:00:00',1);

INSERT INTO concert(jour,heure,spec_id) VALUES ('2015-12-25', '21:00:00',5);
DELETE FROM concert WHERE spec_id=5;

INSERT INTO billet(concert_id,prix) VALUES (1,35);
INSERT INTO billet(concert_id,prix) VALUES (1,50);
INSERT INTO billet(concert_id,prix) VALUES (2,100);

INSERT INTO vente(jour,paiement,billet_id) VALUES ('2015-11-24', 'cheque',1);
INSERT INTO vente(jour,paiement,billet_id) VALUES ('2015-11-30', 'carte',2);

Recherches d’informations

Sur une table

L’objectif de ces exercices est de savoir formuler les requêtes de base (SELECT,FROM,WHERE) sur une seule table de la base de données des « Salles de Concerts ».

3/3 requêtes de base
  1. vérification du contenu de la table 'salles'
    • Question
    • Solution
    Ecrire une requête SQL répondant à la question :
    • \(Q_1\) : « Rechercher toutes les informations sur les salles de la base de données ».
    Votre réponse :
    sql : concerts.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 :

    En SQL en général et SQLite en particulier, on vérifie le contenu d’une table par un simple :

    SELECT * FROM table
    

    Donc pour rechercher toutes les informations sur les salles de concerts :

    SELECT * FROM salles;
    
  2. les spectacles de 4 heures
    • Question
    • Solution
    Ecrire une requête SQL répondant à la question :
    • \(Q_1\) : « Rechercher les spectacles de 4 heures ».
    Votre réponse :
    sql : concerts.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 *
    FROM spectacles
    WHERE duree='04:00:00';
    
  3. dates des concerts de spectacles de 4 heures
    • Question
    • Solution
    Ecrire une requête SQL répondant à la question :
    • \(Q_1\) : « Jour et heure des concerts des spectacles qui durent 4 heures ».
    Votre réponse :
    sql : concerts.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 jour,heure
    FROM concerts NATURAL JOIN spectacles
    WHERE duree='04:00:00';
    

Jointures

L’objectif de ces exercices est de savoir formuler les requêtes sur plusieurs tables (en faisant des jointures) de la base de données des « Salles de Concerts ».

1/1 Jointures
  1. jour et heure des concerts de "la star" dans une salle
    • Question
    • Solution
    Ecrire une requête SQL répondant à la question :
    • \(Q_1\) : « Quelles sont les jours et heures du concert de “laStar” dans la salle au “vauban” ? ».
    Votre réponse :
    sql : concerts.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 jour,heure
    FROM concerts NATURAL JOIN spectacles NATURAL JOIN salles
    WHERE chanteur='laStar' AND nom='vauban';
    

Opérations ensemblistes

L’objectif de ces exercices est de savoir exprimer des opérations ensemblistes entre deux requêtes SQL sur la base de données des « Salles de Concerts ».

1/1 EXCEPT
  1. Quels sont les chanteurs qui n ont jamais fait de spectacle dans une salle
    • Question
    • Solution
    Ecrire une requête SQL répondant à la question :
    • \(Q_1\) : « Quels sont les chanteurs qui n ont jamais fait de spectacle au “vauban” ? ».
    Votre réponse :
    sql : concerts.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 chanteur FROM spectacles
    EXCEPT
    SELECT chanteur
    FROM spectacles NATURAL JOIN salles WHERE nom='vauban';
    

Division Relationnelle

L’objectif de ces exercices est de savoir exprimer des divisions relationnelles sur la base de données des « Salles de Concerts ».

2/2 Division relationnelle
  1. Chanteurs qui font des concerts dans toutes les salles ?
    • Question
    • Solution
    Ecrire une requête SQL répondant à la question :
    • \(Q_1\) : « Quels sont les chanteurs ayant realise au moins un concert dans toutes les salles ? ».
    Votre réponse :
    sql : concerts.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 chanteur
    FROM spectacles sp
    WHERE NOT EXISTS ( SELECT *
                       FROM salles sa
                       WHERE sa.salle_id=sp.salle_id
                         AND NOT EXISTS( SELECT *
                                         FROM concerts co
                                         WHERE co.spec_id=sp.spec_id
                                       )
                        );
    
  2. Concerts pour lesquels tous le billets sont vendus ?
    • Question
    • Solution
    Ecrire une requête SQL répondant à la question :
    • \(Q_1\) : « Quels sont les dates (jour et heure) des concerts pour lesquels il ne reste aucun billet invendu ?? ».
    Votre réponse :
    sql : concerts.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 c.jour, c.heure
    FROM concerts c
    WHERE c.concert_id NOT IN (
                               SELECT b.concert_id
                               FROM billets b
                               WHERE  b.billet_id NOT IN  (
                                                           SELECT billet_id
                                                           FROM ventes
                                                          )
                              );
    

Arbres de requêtes

Sur une table

L’objectif de ces exercices est de savoir représenter sous forme d’arbre les requêtes de base sur une seule table de la base de données « Salles de concerts ».

3/3 SELECT, FROM, WHERE
  1. Vérification du contenu de la table 'salles'
    • Question
    • Solution
    Construire un arbre de requêtes répondant à la question :
    • « Rechercher toutes les informations sur les salles de la base de données ».
    Votre réponse :
    Arbre de requêtes : graph235.json

    Tables

    Opérateurs unaires

    Opérateurs binaires

    Vue d'ensemble
    Une solution possible :

    Toutes les informations sur les salles

    _images/concerts-0-1.png
  2. Spectacles de 4 heures
    • Question
    • Solution
    Construire un arbre de requêtes répondant à la question :
    • « Rechercher les spectacles de 4 heures ».
    Votre réponse :
    Arbre de requêtes : graph239.json

    Tables

    Opérateurs unaires

    Opérateurs binaires

    Vue d'ensemble
    spec_idtitredureechanteursalles_id
    1show must go on04:00:00laStar1
    Une solution possible :

    \(Q = \sigma_{[duree='04:00:00']}(spectacles)\)

    _images/concerts-1.png
  3. jour et heure des concerts qui durent 4 heures
    • Question
    • Solution
    Construire un arbre de requêtes répondant à la question :
    • « jour et heure des concerts de spectacles de 4 heures ».
    Votre réponse :
    Arbre de requêtes : graph244.json

    Tables

    Opérateurs unaires

    Opérateurs binaires

    Vue d'ensemble
    jourheure
    2015-12-2421:00:00
    2015-12-3121:00:00
    Une solution possible :

    \(Q = \Pi_{(jour,heure)}(\Join_{[]}(\sigma_{[duree='04:00:00']}(spectacles),concerts))\)

    _images/concerts-2.png

Jointures

L’objectif de ces exercices est de savoir représenter sous forme d’arbre les requêtes sur plusieurs tables (en faisant des jointures) de la base de données des « Salles de Concerts ».

1/1 Jointures
  1. jour et heure des concerts de 'laStar' au 'vauban'
    • Question
    • Solution
    Construire un arbre de requêtes répondant à la question :
    • math:Q_1 : « jour et heure des concerts de “laStar” au “vauban” ».
    Votre réponse :
    Arbre de requêtes : graph250.json

    Tables

    Opérateurs unaires

    Opérateurs binaires

    Vue d'ensemble
    jourheure
    2015-12-2421:00:00
    2015-12-3121:00:00
    Une solution possible :

    \(Q = \Pi_{(jour,heure)}(\Join_{[]}(\sigma_{[nom='vauban']}(salles),\Join_{[]}(\sigma_{[chanteur='laStar']}(spectacles),concerts)))\)

    _images/concerts-3.png

Opérations ensemblistes

L’objectif de ces exercices est de savoir représenter sous forme d’arbre de requêtes des opérations ensemblistes entre deux requêtes SQL sur la base de données des « Salles de Concerts ».

1/1 EXCEPT
  1. chanteurs qui n ont jamais fait de spectacle au 'vauban'
    • Question
    • Solution
    Construire un arbre de requêtes répondant à la question :
    • « les chanteurs qui n ont jamais fait de spectacle au “vauban” ».
    Votre réponse :
    Arbre de requêtes : graph256.json

    Tables

    Opérateurs unaires

    Opérateurs binaires

    Vue d'ensemble
    chanteur
    TheBigStar
    Une solution possible :

    \(Q = \setminus(\Pi_{(chanteur)}(spectacles),\Pi_{(chanteur)}(\Join_{[]}(spectacles,\sigma_{[nom='vauban']}(salles))))\)

    _images/concerts-4.png
 
Systèmes d'Information : Salles de Concerts, 13 avr. 2023.