Vous êtes sur la page 1sur 3

M1 MIAGE IM Année universitaire 2018-2019

17 décembre 2018

Semestre 1 - Session 1
Bases de Données

Cours de Mr. Thévenin


Durée : 1 h 00

Aucun document autorisé

Le sujet comporte 3 pages (page de garde comprise)

Vous trouverez ci-après un schéma conceptuel extrait de la Base de Données du projet


concernant la logistique d’un fournisseur. Ce schéma décrit les produits proposés, les clients
du fournisseur avec leurs commandes et les colis préparés pour expédier les commandes.

Les produits proposés par le fournisseur sont décrits par un libellé, un volume (utile pour
calculer la taille d’un chargement) et la quantité du produit que l'on a en stock.

Un client est décrit par sa raison sociale et peut être propriétaire de plusieurs entrepôts. Un
entrepôt est simplement décrit par son nom et sont propriétaire.

Une commande est émise par un client et peut concerner plusieurs produits destinés à des
entrepôts différents du client. Ainsi les produits d’une commande peuvent être répartis dans
plusieurs colis, sachant que chaque colis est destiné à un seul entrepôt et concerne une seule
commande. Une commande est décrite par la date à laquelle elle a été passée, la date à
laquelle elle doit être livrée et son état (incomplet, en cours, prête, livrée, annulée).

Dès qu’une commande passe à l’état en cours, les produits concernés sont automatiquement
placés dans des colis. Les produits correspondant à une ligne de commande sont forcément
emballés dans un seul colis et un colis peut contenir les produits de plusieurs lignes de la
même commande, si ces produits sont destinés au même entrepôt. Le stock du dépôt est
décrémenté automatiquement lorsqu’un produit est placé dans un colis.

Un colis est décrit par son état, par son volume (qui pourrait être calculé), la commande qu'il
matérialise et l'entrepôt auquel il est destiné.

1/3
Le schéma relationnel correspondant vous est donné ci-dessous.

PRODUIT(PRODNUM, PRODLIB, PRODVOLUME, QTESTOCK)


CLIENT(CLINUM, RAISON_SOCIALE)
ENTREPOT(ENTNUM, ENTNOM, CLINUM*)
COMMANDE(COMNUM, CLINUM*, COMDATE, COMDATELIV, COMETAT)
CONCERNER(COMNUM*, PRODNUM*, ENTNUM*,QTECOM)
COLIS(COLNUM, COLETAT, COLVOLUME, ENTNUM*, COMNUM*)
CONTENIR(COLNUM*, PRODNUM*)

Partie I : requêtes SQL

Ecrire les requêtes SQL correspondant aux besoins suivants :

1. Afficher le numéro de chaque commande de l'année en précisant pour chacune le


nombre de produits différents commandés et le volume total de tous les produits
commandés.
2. Liste des clients ayant déjà commandé plus de 1000 'trottinettes électriques' pour un
même entrepôt, sur l'ensemble de leurs commandes.
3. Liste des colis matérialisant une commande et contenant un produit alors que dans la
commande correspondante ce produit est destiné à un entrepôt différent de celui
auquel est destiné le colis.
4. Liste des clients auxquels est destiné un colis contenant un produit qui ne constitue
pas la commande que matérialise le colis en question.

2/3
Partie II : transactions SQL

Soit les deux transactions s'exécutant seules sur le serveur, conformément au timing donné
ci-dessous. A l'instant t0, la quantité en stock du produit 1 est égal à 300.

Transaction 1 Transaction 2

t1 Select QTESTOCK from PRODUIT


where PRODNUM =1;
t2 Select QTESTOCK from PRODUIT
where PRODNUM =1;
t3 Update PRODUIT
set QTESTOCK = QTESTOCK-8
where PRODNUM =1;
t4 Select QTESTOCK from PRODUIT
where PRODNUM =1;
t5 Select QTESTOCK from PRODUIT
where PRODNUM =1;
t6 Commit;
t7 Update PRODUIT
set QTESTOCK = 310
where PRODNUM =1;
t8 Commit;
t9 Select QTESTOCK from PRODUIT
where PRODNUM =1;

a) Quels sont les résultats obtenus en t1, t2, t4, t5, t9 ?


b) Justifiez vos réponses pour t4, t5, t7 et t9
c) La transaction 1 est-elle écrite correctement ?

3/3

Vous aimerez peut-être aussi