Voila tout est a peu pres dans le titre, j'ai un exam apres le week-end qui va contenir des questions sur l'algebre relationnelle, pour me preparer j'ai récupéré trois exos sur le sujet, apres avoir fait ceux dans le CD du livre SQL 2ed de SQLpro parceque cetait pas suffisant, enfin voila les exos avec mes solution si quelqu'un voudrai bien y jetais un coup d'œil ca me donnerai vraiment un bon coup de main, a moi mais aussi a ceux qui voudraient s'exercer
surtout la 8 eme requette du premier exercice... j'en ai fait une affaire personnelle...
j'ai essayé de simplifier les opérations pour simplifier la lecture.
Exrecice 1
Film (titre, Nomréalisateur, durée)
Séance (NomSalle, titre, HeureDeb, Version)
Joue (Nomacteur, titre)
Produit (NomProducteur, titre )
Vu ( NomSpectateur, titre, note )
Requêtes:
*Quel est le nom du réalisateur de ‘’WaterWorld’’
*Où (nom de salle) peut on voir jouer ‘’Kevin Kostner’’ en version originale.
Code : Sélectionner tout - Visualiser dans une fenêtre à part R=Projection[Selection(Film,titre='water world'),Nomréalisateur]
*Quels sont les titres des films réalisés par le réalisateur de ‘’WaterWorld’’
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 R1=Selection(Joue,Nomacteur='Kevin Kostner') R2=Jointure(R1,Séance,R1.titre=Séance.titre) R3=Selection(R2,Version='originale') R=Projection(R3,NomSalle)
*Où (nom de salle) peut on voir un film dans lequel jouent ‘’Tom Cruse’’ et ‘’Nicole Kidman’’.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 R1=Projection[Selection(Film,NomRéalisateur='Water World'),titre) R2=Jointure(R1,Film,R1.NomRéalisateur=Film.NomRéalisateur) R=Projection(R2,titre)
*Quels les acteurs qui ont joué dans un film, qu’ils ont réalisé et produit.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 R1=Selection(Joue,NomActeur='Tom Cruse') R2=Selection(Joue,NomActeur='Nicole Kidman') R3=Jointure(R1,R2,R1.titre=R2.titre) R4=Projection(R3,titre) R5=Jointure(R4,Séance,R4.titre=Séance.titre) R=Projection(R5;NomSalle)
PS : Peut-on faire une jointure entre 3 relation ? Ce qui serait plus pratique dans ce cas
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 R1=Projection(Film,Titre,NomRéalisateur) R2=Jointure(Joue,Produit,Joue.Nomacteur=Produit.NomProducteur) R3=Jointure(R1,R2,R1.NomRéalisateur =R2. NomProducteur) R=Projection(R3,Nomacteur)
*Dans quels films joue ‘’Tom Cruse’’ sans ‘’Nicole Kidman’’.
*Quels sont les acteurs qui ont joué dans tous les films réalisés par ‘’Steven Spielberg’’
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 R1=Selection(Joue,Nomacteur='Tom Cruse') R2=Selection(Joue,Nomacteur='Nicole Kidman') R3=Difference(R1,R2) R=Projection(R3,titre)
*Quels les acteurs qui n’ont joué que dans des films réalisés par ‘’Steven Spielberg’’
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 R1=Selection(Film,NomRéalisateur='Steven Spielberg') R2=Projection(R1,titre) R=Division(Joue,R2)
PS:celle-la particulièrement m'a prise la tete pendant une demi journée, j'aimerai vraiment savoir si elle est juste (et celle d'apres qui est presque pareille)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 R1=Jointure(Joue,Film,Joue.titre=Film.titre) R2=Projection(R1,Nomacteur,NomRéalisateur) R3=Projection[Selection(R2,NomRéalisateur = 'Steven Spielberg'),Nomacteur] R4=Projection[Selection(R2,NomRéalisateur != 'Steven Spielberg'),Nomacteur] R=Difference(R3,R4)
*Quels sont les producteurs qui n’ont jamais travaillé avec ‘’Steven Spielberg’’.
*Où (nom de salle) peut on voir un film dans lequel jouent ‘’Tom Cruse’’ ou ‘’Nicole Kidman’’.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 R1=Jointure(Produit,Film,Produit.titre=Film.titre) R2=Projection(R1,NomProducteur,NomRéalisateur) R3=Projection[Selection(R2,NomRéalisateur != 'Steven Spielberg'),NomProducteur] R4=Projection[Selection(R2,NomRéalisateur = 'Steven Spielberg'),NomProducteur] R=Difference(R3,R4)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 R1=Selection(Joue,Nomacteur='Tom Cruse' ou Nomacteur='Nicole Kidman') R2=Jointure(R1,Séance,R1.titre=Séance.titre) R3=Projection(R2,NomSalle)
Exercice 2
Liaison (NumL, VilleA, VilleB)
Pilote (NumP, NomPilote, NbHeureVol)
Vol (NumVol, NumL, date, heure)
Assure (NumP,NumVol, Principal)
*Quels sont les pilotes (NomPilote) ayant assuré des vols sur ‘’Alger’’-‘’Paris’’.
*Quelles sont les liaisons assurées par le pilote N°10
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 R1=Selection(Liaison,VilleA='Alger' et VilleB='Paris'/*eventuellement*/ ou VilleA='Paris' et VilleB='Alger'/*si la requette gére les aller/retour*/) R2=Jointure(R1,Vol,R1.NumL=Vol.NumL) R3=Jointure(R2,Assure,R2.NumVol=Assure.NumVol) R4=Jointure(R3,Pilote,R3.NumP=Pilote.NumP) R=Projection(R4,NomPilote)
*Quels sont les pilotes (NomPilote) n’ayant assuré que des vols sur ‘’Alger’’-‘’Paris’’.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 R1=Selection(Pilote,NumP=10) R2=Jointure(R1,Assure,R1.NumP=Assure.NumP) R3=Jointure(R2,Vol,Vol.NumVol=Vol.NumVol) R=Projection(R3,NumL)
*Quels sont les pilotes (NomPilote) ayant assuré toutes les liaisons.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 R1=Selection(Liaison,VilleA='Alger' et VilleB='Paris') R2=Jointure(R1,Vol,R1.NumL=Vol.NumL) R3=Jointure(R2,Assure,R2.NumVol=Assure.NumVol) R4=Projection(Jointure(R3,Pilote,R3.NumP=Pilote.NumP),NomPilote) /*nom des pilote ayant assuré des vols sur alger-paris*/ R5=Selection(Liaison,VilleA != 'Alger' et VilleB != 'Paris') R6=Jointure(R1,Vol,R1.NumL=Vol.NumL) R7=Jointure(R2,Assure,R2.NumVol=Assure.NumVol) R8=Projection(Jointure(R3,Pilote,R3.NumP=Pilote.NumP),NomPilote)/*nom des pilote ayant assuré des vols autres que sur alger-paris*/ R=Difference(R4,R8) /*enleve de R4 les pilote qui ont assuré d'autres vols*/
Exercice 3
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 R1=Projection(Liaison,NumL) R2=Jointure(R1,Vol,R1.NumL=Vol.NumL) R3=Jointure(R2,Assure,R2.NumVol=Assure.NumVol) R4=Projection[ Jointure(R3,Pilote,R3.NumP=Pilote.NumP) , NomPilote,NumL ] R=Division [ R4 , R1 ]
Médecin (Numed , Nom, Prénom, Grade)
Patient (Numpatient , Nom, Prénom, Age)
Médicament (Code , Libellé, Type)
Prescrit (Numed, Code, Numpatient, Date )
*Quels sont les médicaments (libellé) prescrits par des médecins généralistes ?
R1=Projection(Médecin,Numed,Grade)
R2=Jointure(Prescrit,R1,Prescrit.Numed=R1.Numed)
R=Projection[ Jointure(R2,Médicament,R2.Code=Médicament.Code) , Libellé ]
*Quels sont les Patients traités par des médecins généralistes et des médecins spécailistes?
*Quels sont les médicaments qui n’ont jamais été prescrits?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 R1=Selection [ Projection(Médecin,Numed,Grade) , Grade = 'généraliste' ou Grade ='spécialiste' ] R2=Jointure(Prescrit,R1,Prescrit.Numed=R1.Numed) R=Projection[ Jointure(R2,Patient,R2.Numpatient=Patient.Numpatient) ,Numpatient ]
*Quels sont les médecins (Numed, Nom) qui ne prescrivent jamais d’antibiotiques?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 R1=Projection(Médicament,Code) R2=Projection(Prescrit,Code) R=Difference(R1,R2)
Je remercie tout le monde a l'avance...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 R1=Jointure(Prescrit,Médicament,Prescrit.Code=Médicament.Code) R2=Jointure(R1,Médecin,R1.Numed= Médecin.Numed) R3=Selection(R2,Type='antibiothique') R=Difference[ Projection(Médecin,Numed,Nom) , Projection(R3,Numed,Nom) ]
Partager