{MySQL}

Fermé
rybba - 3 mars 2010 à 17:26
Mouradif Messages postés 26 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 5 novembre 2019 - 4 mars 2010 à 19:22
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!

5 réponses

up (:
0
devMan Messages postés 74 Date d'inscription jeudi 10 décembre 2009 Statut Membre Dernière intervention 16 septembre 2010 15
4 mars 2010 à 09:37
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
Mouradif Messages postés 26 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 5 novembre 2019 36
4 mars 2010 à 12:17
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
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mouradif Messages postés 26 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 5 novembre 2019 36
4 mars 2010 à 19:22
^^ jt'en prie, c'est gratuit :p
0