{MySQL}

rybba -  
Mouradif Messages postés 31 Statut Membre -
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. devMan Messages postés 75 Statut Membre 15
     
    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
  2. Mouradif Messages postés 31 Statut Membre 36
     
    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
  3. Rybba
     
    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
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. Mouradif Messages postés 31 Statut Membre 36
     
    ^^ jt'en prie, c'est gratuit :p
    0