Gestion de bibliothèques

[30 min]

Soit la base relationnelle suivante permettant de gérer des bibliothèques.

Livre (#LivreID, Titre, NomEditeur=>Editeur) avec Titre clé
Livre_Auteur (#LivreID=>Livre, #NomAuteur)
Editeur (#NomEditeur, Adresse, Telephone)
Livre_Exemplaires (#LivreID=>Livre, #BiblioID=>Bibliotheque, NbExemplaires)
Bibliotheque (#BiblioID, Nom, Adresse) avec Nom clé
Livre_Emprunte (#LivreID=>livre, #BiblioID=>Bibliotheque, #NumCard=>Emprunteur, DateEmprunt, DateRetour)
Emprunteur (#NumCard, Nom, Adresse, Téléphone)

Écrivez en algèbre relationnelle la requête permettant de renvoyer le nombre d'exemplaires du livre intitulé "Les cinq disciplines" qui est détenu par la bibliothèque qui a comme nom "Paris".

R1=restriction(livre,titre="les cinq disciplines")
R2=jointure(R1,Livre_ Exemplaires, R1.LivreID=Livre_ Exemplaires.livreID)
R3=jointure(R2,biblioteque, R2.biblioID=biblioteque.biblioID)
R4=restriction(R3.nom="paris")
R5=Projection(R4,NbExemplaires)

Écrivez en en algèbre relationnelle la requête permettant de renvoyer pour chaque livre écrit par "Douglas Kennedy" le nombre d'exemplaires détenus par la bibliothèque "Paris"

R1=jointure(Livre_Auteur,Livre_ Exemplaires, Livre_Auteur.LivreID=Livre_ Exemplaires.livreID)
R2=jointure(R1,biblioteque, R1.biblioID=biblioteque.biblioID)
R3=restriction(R2,R2.nom="paris" and R2.NomAuteur="Douglas Kennedy")
R4=Projection(R4,NbExemplaires)

Écrivez en SQL la requête qui permet de renvoyer le titre du livre, le nom de l'emprunteur, et l'adresse de l'emprunteur pour chaque livre qui est prêté par la bibliothèque "Paris" et dont la date de retour est aujourd'hui.

Utiliser une fonction today() pour renvoyer la date du jour (par exemple, le 15 mai 2013, today()='2013/05/14').

SELECT L.titre, E.nom, E.adresse
FROM livre l, Livre_Emprunte LE, Emprenteur E, Biblioteque B
WHERE l.LivreID=LE.LivreID
AND LE.biblioID=B.biblioID 
AND LE.NumCard=E.NumCard 
AND LE.DateRetour=today() 
AND B.nom="Paris"

Écrivez en SQL la requête qui permet de récupérer les noms de tous les emprunteurs qui ont rendu leurs livres empruntés.

Deux hypothèses sont acceptées :

  1. Soit on considère que DateRetour est la date ou l'emprunteur doit rendre le livre

  2. Soit on considère que l'emprunteur qui a rendu le livre est celui qui n'a pas de valeur

SELECT E.nom
FROM Emprunteur E,Livre_Emprunte LE
WHERE LE.NumCard=E.NumCard 
AND LE.DateRetour < today();
SELECT Nom
FROM Emprunteur
WHERE NumCard NOT IN
(SELECT NumCard FROM Livre_Emprunte)

Écrivez en SQL la requête permettant de récupérer les noms, adresses et nombre de livres empruntés pour chaque emprunteur qui a emprunté plus que 5 livres.

SELECT E.Nom, E.Adresse, count(le.livreID)
FROM Livre_Emprunte LE, Emprunteur E
WHERE LE.NumCard=E.NumCard
GROUP BY E.Nom, E.Adresse
HAVING COUNT(LE.livreID) > 5
AccueilExercice > Exercice : Gestion de bibliothèques< PrécédentSuivant >