Département Mathématiques et Informatique
Appliquées Licence MASS - Universités de Montpellier II et III
Question 1
Un pépiniériste fait appel à vous pour réaliser un système d'information lui permettant de suivre les végétaux qu'il achète à ses fournisseurs et vend à ses clients.
Un végétal est d'une espèce donnée. Il est vendu au pépiniériste par un fournisseur, par lots d'espèces homogènes. Chaque lot a donc une date, un prix d'achat, une quantité et un âge au moment de l'achat.
Un fournisseur est caractérisé par un nom, une ville, un code postal et un pays.
Un client achète au pépiniériste des végétaux pour ses jardins. Il peut avoir plusieurs jardins, mais chaque achat de végétaux est livré en un seul jardin. Chaque achat est caractérisé par le végétal acheté, la quantité achetée, la date, le prix et le fournisseur des végétaux (s'il y a plusieurs fournisseurs, il y aura plusieurs achats).
Chaque jardin est caractérisée par une ville, un pays, un code postal, et le client qui en est propriétaire. Chaque client est caractérisé par son nom, son prénom et sa date de naissance.
Quand un client est déçu par son achat, il le retourne au pépiniériste. Chaque retour est caractérisé par la date du retour, l'achat correspondant, la quantité retournée, la raison du retour, sous la forme d'un texte résumant les déclarations de l'acheteur au moment du retour, et le remplacement éventuel des végétaux défectueux par d'autres (de même espèce).
Un tel remplacement est lié à une décision, positive ou négative, du pépiniériste. Quand il est décidé, il donnera lieu à un achat gratuit par le client, qui sera représenté dans la base
comme tout autre achat de végétaux.
1. Proposez un schéma entité-association pour cette base de données.
2. Précisez les cardinalités des associations.
3. Déduisez-en un schéma relationnel, précisant les clés primaires et étrangères.
4. Proposez un schéma SQL, en typant les attributs comme texte, nombre, ou date.
Question 2
Proposez, pour chacun des cas suivants une requête en SQL et une expression relationnelle:
1. Trouver la liste des végétaux qui ont été retournés par les clients moins d'un mois après leur date d'achat.
2. Trouver la liste des végétaux achetés qui ont été plantés dans la même ville que celle de leur fournisseur.
3. Trouver la liste des végétaux qui ont été retournés au pépiniériste, groupés par fournisseur, puis par acheteur, puis par espèce (3 requêtes).
Question 3
Soit le schéma relationnel suivant:
recette(nom, temps, mode)
contient(nomR, nomI, quantité) ingrédient(nom, type, unité)
Les clés primaires sont soulignées et les clés étrangères en italiques.
Proposez, pour chacun des cas suivants une requête en SQL et une expression relationnelle:
1. Trouvez les recettes prêtes en moins d'une heure.
2. Trouvez tous les noms des recettes à base de lait.
3. Trouvez les recettes à base de lait prêtes en moins d'une heure.
4. Trouvez les les noms des recettes à base de moins d'un demi litre d'ingrédient liquide.
Il est rappelé que les des opérateurs de comparaison s'appliquent aux dates et aux heures (le type DATETIME de SQL) et qu'il existe et des fonctions permettant de réaliser des opérations sur les dates, ADDDATE(aaaa-mm-jj, n MONTH), SUBDATE(aaaa-mm-jj, n MONTH), ou les heures ADDDATE(hh:mm:ss, n HOUR),...