Aller au contenu

Base Bibliothèque⚓︎

Soit le système d’information simplifié d’une bibliothèque dont voici le schéma relationnel :

base bibliothèque

Télécharger fichier Création de la base BIBLI ⬇️

  1. Ecrire le schéma relationnel "en intention" ou détaillé de la base bibilothèque
  2. Expliquer pourquoi le champ dateemprunt fait partie de la clé primaire.
  3. Écrire les requêtes suivantes :

R1 : Qui est le lecteur n°30 ?
R2 : Liste des lecteurs dont le nom de famille commence par la lettre « S »
R3 : Liste des ouvrages qui traitent de la méthode Merise.
R4 : Liste des ouvrages qui traitent du « registre » à partir de l’année 2000.
R5 : Liste des lecteurs qui portent le nom (ou le prénom) « BERTRAND »
R6 : Quels sont le titre et l’année de parution de l’ouvrage le plus ancien ?
R7 : Titre des ouvrages actuellement empruntés ou ayant déjà été empruntés
R8 : Nom des lecteurs ayant effectué au moins un emprunt depuis le début de l’année 2012.
R9 : Liste des emprunts (titres et dates) réalisés par le lecteur nommé « HAMSI »
R10 : Liste des emprunts en cours. Pour chaque emprunt, nom du lecteur, titre de l’ouvrage et date d’emprunt.
R11 : Nombre total d’emprunts enregistrés à ce jour.
R12 : Ajouter l’ouvrage suivant dans la base : N°40, Titre ouvrage : « Réseaux de neurones », Année de parution : 2004
R13 : Enregistrer le retour de l’ouvrage n°17 à la date du jour. La fonction date() retourne la date du système.
R14 : Supprimer tous les emprunts régularisés (ouvrages restitués) de l’année 2010.
R15 : Combien reste t-il d’emprunts non régularisés pour l’année 2011 ?
R16 : Nombre total d’emprunts réalisés par lecteurs.

Un nouveau lecteur souhaite emprunter un livre sur l’intelligence artificielle. La bibilothèque n’est dispose. Elle le commande pour que ce lecteur puisse l’emprunter dès que possible.
Comment cela se matérialise dans la base de donnée ?
R17 : Insérer le nouveau lecteur
R18 : Insérer le livre
R19 : Insérer l’emprunt
R20 :Il y a une faute d’écriture sur le nom de ce client. Corrigez là.
R21 : On introduit un nouvel attribut à la table lecteur, le nombre de livre autorisé en emprunt. Mettez cette valeur à jour à 4.
R22 : Une mise à jour de la bibliothèque est nécessaire. Faites sortir du stock tous les livres antérieur à 2000.

Télécharger fichier Correction de la base BIBLI ⬇️

R1 : Qui est le lecteur n°30 ?
🐬 SQL
SELECT*
FROM LECTEUR
WHERE NumLecteur = 30;
R2 : Liste des lecteurs dont le nom de famille commence par la lettre « S »
🐬 SQL
SELECT*
FROM LECTEUR
WHERE NomLecteur LIKE "S*";
R3 : Liste des ouvrages qui traitent de la méthode Merise.
🐬 SQL
SELECT*
FROM OUVRAGE
WHERE TitreOuvrage LIKE "*Merise*";
R4 : Liste des ouvrages qui traitent du « registre » à partir de l’année 2000.
🐬 SQL
SELECT*
FROM OUVRAGE
WHERE TitreOuvrage LIKE "*Registre*"
AND AnneeParution > 2000;
R5 : Liste des lecteurs qui portent le nom (ou le prénom) « BERTRAND »
🐬 SQL
SELECT*
FROM LECTEUR
WHERE NomLecteur = "BERTRAND"
OR PrenomLecteur = "Bertrand";
R6 : Quels sont le titre et l’année de parution de l’ouvrage le plus ancien ?
🐬 SQL
SELECT  TitreOuvrage, AnneeParution
FROM OUVRAGE
WHERE AnneeParution = (SELECT MAX(AnneeParution)
FROM OUVRAGE)
ORDER BY TitreOuvrage ASC;
R7 : Titre des ouvrages actuellement empruntés ou ayant déjà été empruntés
🐬 SQL
SELECT DISTINCT TitreOuvrage
FROM OUVRAGE
INNER JOIN EMPRUNTER
ON OUVRAGE.NumOuvrage = EMPRUNTER.NumOuvrage
WHERE DateEmprunt IS NOT NULL; /* La clause WHERE est ici facultative*/
R8 : Nom des lecteurs ayant effectué au moins un emprunt depuis le début de l’année 2012.
🐬 SQL
SELECT DISTINCT NomLecteur
FROM LECTEUR
INNER JOIN EMPRUNTER
ON LECTEUR.NumLecteur = EMPRUNTER.NumLecteur
WHERE DateEmprunt LIKE  "*/*/2012";
R9 : Liste des emprunts (titres et dates) réalisés par le lecteur nommé « HAMSI »
🐬 SQL
SELECT OUVRAGE.TitreOUvrage, OUVRAGE.AnneeParution
FROM ((LECTEUR
INNER JOIN EMPRUNTER
ON LECTEUR.NumLecteur = EMPRUNTER.NumLecteur)
INNER JOIN OUVRAGE
ON OUVRAGE.NumOuvrage = EMPRUNTER.NumOuvrage)
WHERE NomLecteur ="HAMSI";
R10 : Liste des emprunts en cours. Pour chaque emprunt, nom du lecteur, titre de l’ouvrage et date d’emprunt.
🐬 SQL
SELECT LECTEUR.NomLecteur, OUVRAGE.TitreOUvrage, EMPRUNTER.DateEmprunt
FROM ((LECTEUR
INNER JOIN EMPRUNTER
ON LECTEUR.NumLecteur = EMPRUNTER.NumLecteur)
INNER JOIN OUVRAGE
ON OUVRAGE.NumOuvrage = EMPRUNTER.NumOuvrage)
WHERE DateRetour IS NULL;
R11 : Nombre total d’emprunts enregistrés à ce jour.
🐬 SQL
SELECT COUNT(DateEmprunt) AS NbEmprunt
FROM EMPRUNTER;
R12 : Ajouter l’ouvrage suivant dans la base : N°40, Titre ouvrage : « Réseaux de neurones », Année de parution : 2004
🐬 SQL
INSERT INTO OUVRAGE (NumOuvrage, TitreOuvrage, AnneeParution )
VALUES (40,"Réseaux de neurones",2004);
R13 : Enregistrer le retour de l’ouvrage n°17 à la date du jour. La fonction date() retourne la date du système.
🐬 SQL
UPDATE EMPRUNTER 
SET  DateRetour = Date ()
WHERE NumOUvrage = 17
AND DateRetour IS NULL ;
R14 : Supprimer tous les emprunts régularisés (ouvrages restitués) de l’année 2010.
🐬 SQL
DELETE FROM EMPRUNTER
WHERE DateEmprunt LIKE "*/*/2010"
AND DateRetour IS NOT NULL;
R15 : Combien reste t-il d’emprunts non régularisés pour l’année 2011 ?
🐬 SQL
SELECT COUNT (DateEmprunt) AS NbOK2011
FROM EMPRUNTER
WHERE DateEmprunt LIKE "*/*/2011"
AND DateRetour IS NULL;
R16 : Nombre total d’emprunts réalisés par lecteurs.

🐬 SQL
SELECT COUNT(EMPRUNTER.DateEmprunt), LECTEUR.NomLecteur
FROM EMPRUNTER
INNER JOIN LECTEUR
ON LECTEUR.NumLecteur = EMPRUNTER.NumLecteur
GROUP BY LECTEUR.NomLecteur ;

R17 : Insérer le nouveau lecteur
🐬 SQL
INSERT INTO LECTEUR (`numlecteur`, `nomlecteur`, `prenomlecteur`) VALUES
(13, 'ALAMARD', 'Frédéric') ;
R18 : Insérer le livre
🐬 SQL
INSERT INTO OUVRAGE (`numouvrage`, `titreouvrage`, `anneeparution`) VALUES
(1, 'Passeport pour l''algorithmique objet', 1998) ;
R19 : Insérer l’emprunt
🐬 SQL
INTO EMPRUNTER (`numlecteur`, `numouvrage`, `dateemprunt`, `dateretour`) VALUES (13, 17, '2012-01-18', NULL) ;
R20 :Il y a une faute d’écriture sur le nom de ce client. Corrigez là.
🐬 SQL
UPDATE LECTEUR 
SET nomlecteur= ALAMART
WHERE nomlecteur= ALAMARD AND `prenomlecteur` = 'Frédéric' ;
R21 : On introduit un nouvel attribut à la table lecteur, le nombre de livre autorisé en emprunt. Mettez cette valeur à jour à 4.
🐬 SQL
UPDATE LECTEUR 
SET nbLibreSorti = 4 ;
R22 : Une mise à jour de la bibliothèque est nécessaire. Faites sortir du stock tous les livres antérieur à 2000.
🐬 SQL
DELETE FROM OUVRAGE 
WHERE anneeparution < 2000 ;