{MySQL}

Bonjour,

J'ai une petit difficulté avec un modèle relationnel:

Le voici:

Oeuvre (numO, nomO, duréeO, numC)
numO = clé primaire
numC = étrangère

Concert (numC, nomC, DateC, CodeL)
numC = clé prim
CodeL = étrangère

Lieu (codeL, nomL, NbPlaceL)
CodeL = clé prim

Question:

En fait, une même oeuvre peut être jouée dans differents concerts, il faut donc modifier le modèle afin de tenir compte de cette contrainte.

J'avoue, j'ai eu beau chercher, je ne trouve pas :(

Merci à celui qui m'éclairera ^^

PS: Si quelqu'un a vraiment du temps, j'ai 4 requetes à faire, pour vérifier si c'est bon :)

a) nom du concert (nom) concernant l'oeuvre "le beau danube bleu"
b) nombre de concerts joués pendant le festival
c) noms des concerts proposant + de 4 oeuvres
d) modifier la date du concert numero 148: la nouvelle date est le 18/06

Merci beaucoup!
Configuration: Windows XP / Firefox 3.5.8

5 réponses

  1. Bonjour,
    a - :
    select nomC from Concert
    where numC in (seletc numC from Oeuvre where nomO = 'le beau danube bleu')
    

    b- :
    select * from Concert
    where DateC between 'date-debut-festival' and 'date-fin-festival' 
    


    c - :
    select nomC from Concert
    where numC in (select numC from oeuvre having count(numC) >4) 
    


    d - :
    update Concert
    set dateC = '18/06/2010' 
    where numC = 148 
    
    0
    1. Salut rybba,

      Une oeuvre peut être jouées dans plusieurs concerts et je suppose qu'un concerts et composé de plusieurs oeuvres. Il faut créer une table qui fait la liaison entre Concerts et Oeuvres (que j'apellerais Interpretation)

      ton modèle relationnel final devrait donc plutôt ressembler à ça :

      Oeuvre (numO, nomO, duréeO)

      Interpretation (#numO, #numC)

      Concert (numC, nomC, DateC, #CodeL)

      Lieu (CodeL, nomL, NbPlaceL)

      Légende :
      Souligné : Clé primaire
      #Précédé d'un "#" : Clé étrangère


      Voilà un problème de résolu et compris j'espère...

      en ce qui concerne tes requêtes. Celles de devMan devraient fonctionner mais si (comme je m'en doute) il s'agit d'un exercice à faire pour l'école (je me rappelle en avoir eu un qui lui ressemblait beaucoup), je devine que votre prof s'attend à voir des jointures dans les requêtes. Voici donc celles que je préconise :

      a) nom du concert (nom) concernant l'oeuvre "le beau danube bleu"
      SELECT nomC
      FROM concert, interpretation, oeuvre
      WHERE concert.numC = interpretation.numC
      AND interpretation.numO = oeuvre.numO
      AND nomO = "le beau danube bleu";
      

      b) nombre de concerts joués pendant le festival
      SELECT COUNT(*) AS NbConcerts
      FROM concert;
      

      c) noms des concerts proposant + de 4 oeuvres
      SELECT nomC, COUNT(numO) AS NbOeuvres
      FROM Concert, Interpretation
      GROUP BY nomC
      HAVING NbOeuvres > 4;
      

      d) modifier la date du concert numero 148: la nouvelle date est le 18/06
      UPDATE concert
      SET DateC = 2010-06-18
      WHERE numC = 148;
      


      NB : certains profs exigent le ";" (point-virgule) à la fin de chaque requête.
      0
      1. Merci beaucoup Mouradif, merci aussi à DevMan même si c'était pas trop ce que je voulais car effectivement c'est pour un exercice à l'école.
        0
        1. ^^ jt'en prie, c'est gratuit :p
          0