• Aucun résultat trouvé

S2 - TP4 : requêtes avancées

N/A
N/A
Protected

Academic year: 2022

Partager "S2 - TP4 : requêtes avancées"

Copied!
11
0
0

Texte intégral

(1)

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

(2)

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 |

+---+---+---+---+

(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

(4)

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

(5)

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 |

+---+---+---+---+---+

(6)

* 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 | +---+---+---+---+---+---+

L’interface web (mini-projet) ci-dessous réutilise le résultat de cette

requête

(7)

Table EXEMPLAIRE

7. Ajouter/modifier/supprimer un exemplaire :

Dans les scripts php du modèle de l’exemplaire, il est nécessaire d’utiliser des scripts SQL pour AJOUTER/MODIFIER/SUPPRIMER un EXEMPLAIRE

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

8. Information sur les Exemplaires (Disponibilité d’œuvre dans la bibliothèque) :

L’interface web (mini-projet) ci-dessous utilise le résultat de 2 requêtes

* Requête 4a  : Afficher pour une oeuvre  : nom de l'auteur, Titre , date de parution, nombre d'exemplaires dans la bibliothèque (présents) ainsi que le nombre d'exemplaires total

* Requête 4b  : Afficher la liste des exemplaires disponibles pour une oeuvre  : numéro, état , date d’achat,

prix , mettre 1 drapeau pour indiquer si l'exemplaire est dans la bibliothèque

(8)

Table EMPRUNT

9. Méthodes nécessaires pour faire l’application

Pour sélectionner un adhérent

Liste des adhérents (distincts) ayant emprunté un exemplaire d’un livre (les exemplaires ne sont pas encore rendus) (findEmpruntReturnDropdownAdherents())

Liste des adhérents qui peuvent emprunter un exemplaire :

* l’adhérent est à jour dans sa cotisation

* l’adhérent n’a pas d’exemplaire emprunté et non rendu en retard

* l’adhérent a emprunté moins de 6 documents (exemplaires) ( findEmpruntDropdownAdherents())

Lors d’un emprunt   :

Liste des exemplaires disponibles : nomAuteur, titre, idOeuvre(id), idExemplaire(id) (findExemplaireOeuvreDispo)

Nombre d’exemplaire en retard pour un adhérent

(findNbExempairesRetardAdherent($idAdherent))

Liste des emprunts (livre non rendu) par un adhérent : idAdherent(id), idExemplaire(id), titre, nomAdherent, date_emprunt, date_retour, nombre de jours entre la date d’aujourd’hui (curdate) et la date_emprunt ( findEmpruntsByOneAdherent($idAdherent))

Lorsqu’un adhérent rend des livres

Liste des exemplaires que doit rendre un adhérent : nomAuteur, titre, idOeuvre(id), idExemplaire(id) ( findExemplairesArendre($idAdherent))

Lors de la suppression des emprunts

Liste des emprunts idAdherent(id), idExemplaire(id), titre,

nomAdherent , date_emprunt, date_retour , nombre de jours entre la date d’aujourd’hui (curdate) et la date_emprunt, si le paramètre $idAdherent est vide, afficher tous les emprunts

(findAdherentEmprunt($idAdherent=""))

(9)

10. bilan :

Afficher le nom des adhérents qui ont emprunté un exemplaire d'un livre et qui ne l'ont pas rendu, afficher la date de retour prévue maximum (90 jours) …, voici le détail des informations nécessaires :

idAdherent(id), idExemplaire(id), titre, nomAdherent, date_emprunt, date_retour , nbre de jours entre la date d’aujourd’hui (curdate) et la date_emprunt

, nbre de jours entre la date d’aujourd’hui (curdate) et la date_emprunt+90j , date limite d’emprunt

, un booleen flagRetard egal à 1 si la date d’emprunt est supérieure à la date d’aujourd’hui + 90 jours

, un booleen flagPenalite egal à 1 si la date d’emprunt est supérieure à la date d’aujourd’hui + 120 jours

, la Penalite : (nombre de jours de retard-120j) * 0,5 si c’est inférieur à 25€ sinon 25 €

(10)

Annexes :

Auteurs requête 1b

Adhérents : requête 2b

Oeuvres :

(ancienne version) requête 3b

requête

3c

(11)

Exemplaires : requête 4a

requête 4b

Emprunts bilan :

Références

Documents relatifs

La seconde particularité du modèle est de résumer la forme d'une courbe particulière par la valeur d'un seul paramètre (paramétre m) ; au lieu de deux états

Sans être passéiste, en vain je m’interroge Sur la vie d’aujourd’hui soulevant chaque jour Un scandale nouveau pour celui qui s’arroge Le droit d’empoisonner sans prendre

La théorie de l’art moderniste a renoué avec une certaine forme de platonisme, reléguant l’ornement dans le domaine des apparences malignes, cherchant avant

Notre mission d’aumônier oscille bien souvent entre l’accompagnant spirituel parfois psychologique, mais aussi dans le rôle d’assistant social ou de visiteur de prison, car

Appellations Villages Premiers Crus 10% de la production totale 640 Climats classés en Premiers Crus ex : Chablis 1 er Cru, Montmains Appellations Villages 37% de la production

Feb 03, 2022 · PRÉSENTATION DU PRIX DE LANGEAIS Le Tiercé Quarté Quinté+ du jeudi 3 février 2022 se disputera dans le temple du trot de Paris Vincennes.C'est le Prix de

Vantail bois + plinthe automatique / Wooden door + automatic drop seal Vantail bois + joint balai / Wooden door + brush seal. Bloc-porte vantail bois ou vitré acoustique de 30 à

Les faiblesses méthodologiques, notamment dans la définition des variables, et dans l'absence de certains éléments d'analyse s'ajoutent au risque toujours présent de tomber dans