Soit le modèle relationnel suivant :
ADHERENT(id,nom,adresse,date_paiement)
EMPRUNT(#adherent_id*,#exemplaire_id*,date_emprunt,date_retour) EXEMPLAIRE(id, etat, date_achat, prix, #oeuvre_id*)
OEUVRE(id, titre ,date_parution, photo, #auteur_id*) AUTEUR(id,nom,prenom)
Si date_retour = NULL alors l'exemplaire du livre n'a pas été rendu. Etat = neuf, bon , moyen ou mauvais
Question 1
Établir le modèle conceptuel des données associé à ce modèle relationnel sur le logiciel JMerise.
Question 2
* Créer le script SQL pour produire les tables.
* Intégrer les contraintes sur les clés étrangères dans les tables.
* Importer des données dans les tables à l’aide des fichiers CSV.
* Exécuter les commandes SQL suivantes pour supprimer les « warnings » : (dates qui ont prises comme valeur "0000-00-00"
Remarque:
La commande SHOW VARIABLES LIKE 'sql_mode'; permet de voir que 2 variables sont mises par défaut NO_ZERO_DATE et NO_ZERO_IN_DATE, il est donc interdit sauf si l’on change ces variables d’utiliser des dates ayant pour valeur ’0000-00-00’ .
* Si vous rencontrez des problèmes d’encodage, vous pouvez tester la commande suivante :
Question 3
Écrire les requêtes SQL suivantes :
S2 - TP4 : requêtes avancées
S2 - TP4 : requêtes avancées
Table AUTEUR
1. Ajouter/modifier/supprimer un auteur :
Dans les scripts php du modèle de l’auteur, il est nécessaire d’utiliser des scripts SQL pour AJOUTER/MODIFIER/SUPPRIMER un AUTEUR
Réaliser (préparer) ces scripts SQL :
2. Informations sur les Auteurs :
* Requête 1a : Afficher les auteurs ainsi que le nombre d’œuvres par auteur
+---+---+---+---+
| nomAuteur | prenomAuteur | idAuteur | nbrOeuvre | +---+---+---+---+
| Azimov | Isaac | 14 | 2 |
| Baudelaire | Charles | 15 | 2 |
| Chateaubriand | François-René | 2 | 1 |
| Christie | Agatha | 1 | 4 |
| De La Fontaine | Jean | 5 | 2 |
| Duras | Marguerite | 9 | 2 |
| Flaubert | Gustave | 3 | 1 |
| Highsmith | Patricia | 12 | 1 |
| Kipling | Rudyard | 13 | 2 |
| Moliere | Jean-Baptiste Poquelin | 16 | 2 |
| Prévert | Jacques | 4 | 2 |
| Zola | Émile | 11 | 3 |
+---+---+---+---+
* Requête 1b :Afficher tous les auteurs ainsi que le nombre d’œuvres par auteur (y compris ceux qui n’ont pas d’œuvre)
+---+---+---+---+
| nom | prenom | id | nbrOeuvre | +---+---+---+---+
| Azimov | Isaac | 14 | 2 |
| Baudelaire | Charles | 15 | 2 |
| Chateaubriand | François-René | 2 | 1 |
| Christie | Agatha | 1 | 4 |
| Daudet | Alphonse | 6 | 0 |
| De La Fontaine | Jean | 5 | 2 |
| Duras | Marguerite | 9 | 2 |
| Flaubert | Gustave | 3 | 1 |
| Highsmith | Patricia | 12 | 1 |
| Hugo | Victor | 7 | 0 |
| Kessel | Joseph | 8 | 0 |
| Kipling | Rudyard | 13 | 2 |
| Moliere | Jean-Baptiste Poquelin | 16 | 2 |
| Prévert | Jacques | 4 | 2 |
| Proust | Marcel | 10 | 0 |
| Zola | Émile | 11 | 3 | +---+---+---+---+
L’interface web (mini-projet) ci-dessous réutilise le résultat de cette
requête
Table ADHERENT
3. Ajouter/modifier/supprimer un adhérent :
Dans les scripts php du modèle de l’adhérent, il est nécessaire d’utiliser des scripts SQL pour AJOUTER/MODIFIER/
SUPPRIMER un ADHERENT
Réaliser (préparer) des scripts SQL sur le même principe que pour la table précédente pour ajouter, modifier, supprimer, afficher un enregistrement
4. Information sur les Adhérents
* Requête 2.a : Afficher les informations sur chaque adhérent + la date limite (datePaiementFutur) pour renouveler leur cotisation (datePaiement + 1 an) + le nombre d’emprunt en cours (faire une jointure à gauche sur emprunt).
+---+---+---+---+---+---+
| nom | adresse | date_paiement| id | nbrEmprunt | datePaiementFutur | +---+---+---+---+---+---+
| asproitis | grenoble | 2018-12-04 | 8 | 0 | 2019-12-04 |
| axelrad | sevenans | 2018-01-12 | 3 | 4 | 2019-01-12 |
| bedez | hericourt | 2018-03-17 | 4 | 3 | 2019-03-17 |
| berger | les glacis | 2011-11-03 | 5 | 0 | 2012-11-03 |
| bonilla | sochaux | 2018-03-17 | 7 | 0 | 2019-03-17 |
| cambot | sevenans | 2018-12-15 | 6 | 0 | 2019-12-15 |
| dupont | grenoble | 2018-03-14 | 10 | 0 | 2019-03-14 |
| durant | belfort | 2018-12-16 | 11 | 0 | 2019-12-16 |
| lauvernay | sevenans | 2018-06-13 | 2 | 3 | 2019-06-13 |
| millet | Montbeliard | 2018-11-03 | 1 | 0 | 2019-11-03 |
| pereira | danjoutin | 2018-11-03 | 9 | 0 | 2019-11-03 |
| piton | belfort | 2018-11-03 | 12 | 0 | 2019-11-03 | +---+---+---+---+---+---+
* Requête 2.b : Reprendre la requête ci dessus et ajouter 2 drapeaux (flag) qui indiquent si l’adhérent est en retard sur sa cotisation ou devra bientôt renouveler sa cotisation.
+---+---+---+---+---+---+---+---+
| nomAdherent | adresse | datePaiement | idAdherent | nbrEmprunt | retard | retardProche | datePaiementFutur | +---+---+---+---+---+---+---+---+
| asproitis | grenoble | 2018-12-04 | 8 | 0 | 0 | 0 | 2019-12-04 |
| axelrad | sevenans | 2018-01-12 | 3 | 4 | 1 | 1 | 2019-01-12 |
| bedez | hericourt | 2018-04-17 | 4 | 3 | 0 | 0 | 2019-04-17 |
| berger | les glacis | 2012-11-03 | 5 | 0 | 1 | 1 | 2013-11-03 |
| billot | Montbeliard | 2018-11-03 | 1 | 0 | 0 | 0 | 2019-11-03 |
| bonilla | sochaux | 2018-02-17 | 7 | 0 | 0 | 1 | 2019-02-17 |
| cambot | sevenans | 2018-12-15 | 6 | 0 | 0 | 0 | 2019-12-15 |
| dupont | grenoble | 2018-03-14 | 10 | 0 | 0 | 0 | 2019-03-14 |
| durant | belfort | 2018-12-16 | 11 | 0 | 0 | 0 | 2019-12-16 |
| lauvernay | sevenans | 2018-06-13 | 2 | 5 | 0 | 0 | 2019-06-13 |
| pereira | danjoutin | 2018-11-03 | 9 | 0 | 0 | 0 | 2019-11-03 |
| piton | belfort | 2018-11-03 | 12 | 0 | 0 | 0 | 2019-11-03 | +---+---+---+---+---+---+---+---
L’interface web (mini-projet) ci-dessous réutilise le résultat de cette
requête
Table OEUVRE
5. Ajouter/modifier/supprimer une oeuvre :
Dans les scripts php du modèle de l’oeuvre, il est nécessaire d’utiliser des scripts SQL pour AJOUTER/MODIFIER/SUPPRIMER une OEUVRE
Réaliser (préparer) des scripts SQL sur le même principe que pour la table précédente pour ajouter, modifier, supprimer, afficher un enregistrement
6. Information sur les Œuvres ( sur le même principe ):
* Requête 3.a : Afficher les références des œuvres et le nombre d'exemplaires, si la date est NULL mettre une chaîne de caractères vide à la place de la valeur NULL.
+---+---+---+---+---+
| nomAuteur | titre | idOeuvre | dateParution | nbExemplaire | +---+---+---+---+---+
| Azimov | La guerre des mondes | 15 | 1970-03-15 | 2 |
| Azimov | les mondes perdus | 14 | 1980-05-06 | 2 |
| Baudelaire | Les fleurs du mal | 12 | 1957-06-25 | 1 |
| Baudelaire | petits poèmes en prose | 13 | 1969-01-01 | 2 |
| Chateaubriand | mémoire d'outre-tombe | 7 | 1949-01-01 | 2 |
| Christie | dix brèves rencontres | 3 | 1982-10-01 | 2 |
| Christie | le miroir de la mort | 4 | 1961-01-01 | 3 |
| Christie | le retour de Poirot | 1 | 1960-02-12 | 4 |
| Christie | Poirot quitte la scène | 2 | 1975-05-01 | 2 |
| De La Fontaine | Les fables | 17 | 1694-01-01 | 2 |
| Duras | un amour de swam | 9 | 2004-06-01 | 1 |
| Flaubert | Madame de Bovary | 8 | 1956-12-15 | 1 |
| Highsmith | une créature de rêve | 6 | 1992-02-01 | 1 |
| Kipling | kim | 20 | 1901-07-01 | 3 |
| Kipling | le livre de la jungle | 19 | 1968-12-11 | 5 |
| Moliere | le misanthrope | 11 | 1666-01-01 | 1 |
| Moliere | les femmes savantes | 10 | 1672-03-16 | 4 |
| Prévert | paroles | 5 | 1694-01-01 | 1 |
| Prévert | spectacles | 16 | 1948-05-12 | 1 |
+---+---+---+---+---+
* Requête 3.b : Reprendre la requête ci dessus et ajouter les œuvres qui n’ont pas d’exemplaire
+---+---+---+---+---+
| nomAuteur | titre | idOeuvre | dateParution | nbExemplaire | +---+---+---+---+---+
| Azimov | La guerre des mondes | 15 | 1970-03-15 | 2 |
| Azimov | les mondes perdus | 14 | 1980-05-06 | 2 |
| Baudelaire | Les fleurs du mal | 12 | 1957-06-25 | 1 |
| Baudelaire | petits poèmes en prose | 13 | 1969-01-01 | 2 |
| Chateaubriand | mémoire d'outre-tombe | 7 | 1949-01-01 | 2 |
| Christie | dix brèves rencontres | 3 | 1982-10-01 | 2 |
| Christie | le miroir de la mort | 4 | 1961-01-01 | 3 |
| Christie | le retour de Poirot | 1 | 1960-02-12 | 4 |
| Christie | Poirot quitte la scène | 2 | 1975-05-01 | 2 |
| De La Fontaine | Le triomphe de l'amour | 18 | 1980-05-06 | 0 |
| De La Fontaine | Les fables | 17 | 1694-01-01 | 2 |
| Duras | le marin de Gibraltar | 21 | 1952-07-12 | 0 |
| Duras | un amour de swam | 9 | 2004-06-01 | 1 |
| Flaubert | Madame de Bovary | 8 | 1956-12-15 | 1 |
| Highsmith | une créature de rêve | 6 | 1992-02-01 | 1 |
| Kipling | kim | 20 | 1901-07-01 | 3 |
| Kipling | le livre de la jungle | 19 | 1968-12-11 | 5 |
| Moliere | le misanthrope | 11 | 1666-01-01 | 1 |
| Moliere | les femmes savantes | 10 | 1672-03-16 | 4 |
| Prévert | paroles | 5 | 1694-01-01 | 1 |
| Prévert | spectacles | 16 | 1948-05-12 | 1 |
| Zola | j'accuse | 23 | 1898-01-13 | 0 |
| Zola | la terre | 24 | 1887-01-01 | 0 |
| Zola | l’assommoir | 22 | 1976-01-01 | 0 |
+---+---+---+---+---+
* Requête 3.d : C’est une requête que vous pouvez utiliser dans votre projet. Elle reprend la requête ci- dessus et affiche en plus le nombre d’exemplaires disponibles (non empruntés). Cette requête est compliquée, même à comprendre, je vous conseille dans un premier temps de reprendre la solution en annexe. Cette requête est identique à celle utilisée en 4c.
+---+---+---+---+---+---+ | nomAuteur | titre | idOeuvre | dateParution | nbExemplaire | nombreDispo | +---+---+---+---+---+---+ | Azimov | La guerre des mondes | 15 | 1970-03-15 | 2 | 2 || Azimov | les mondes perdus | 14 | 1980-05-06 | 2 | 1 |
| Baudelaire | Les fleurs du mal | 12 | 1957-06-25 | 1 | 1 |
| Baudelaire | petits poèmes en prose | 13 | 1969-01-01 | 2 | 2 |
| Chateaubriand | mémoire d'outre-tombe | 7 | 1949-01-01 | 2 | 2 |
| Christie | dix brèves rencontres | 3 | 1982-10-01 | 2 | 1 |
| Christie | le miroir de la mort | 4 | 1961-01-01 | 3 | 2 |
| Christie | le retour de Poirot | 1 | 1960-02-12 | 4 | 2 |
| Christie | Poirot quitte la scène | 2 | 1975-05-01 | 2 | 0 |
| De La Fontaine | Le triomphe de l'amour | 18 | 1980-05-06 | 0 | 0 |
| De La Fontaine | Les fables | 17 | 1694-01-01 | 2 | 2 |
| Duras | le marin de Gibraltar | 21 | 1952-07-12 | 0 | 0 |
| Duras | un amour de swam | 9 | 2004-06-01 | 1 | 1 |
| Flaubert | Madame de Bovary | 8 | 1956-12-15 | 1 | 1 |
| Highsmith | une créature de rêve | 6 | 1992-02-01 | 1 | 0 |
| Kipling | kim | 20 | 1901-07-01 | 3 | 3 |
| Kipling | le livre de la jungle | 19 | 1968-12-11 | 5 | 3 |
| Moliere | le misanthrope | 11 | 1666-01-01 | 1 | 1 |
| Moliere | les femmes savantes | 10 | 1672-03-16 | 4 | 3 |
| Prévert | paroles | 5 | 1694-01-01 | 1 | 1 |
| Prévert | spectacles | 16 | 1948-05-12 | 1 | 1 |
| Zola | j'accuse | 23 | 1898-01-13 | 0 | 0 |
| Zola | la terre | 24 | 1887-01-01 | 0 | 0 |
| Zola | l’assommoir | 22 | 1976-01-01 | 0 | 0 | +---+---+---+---+---+---+