Académique Documents
Professionnel Documents
Culture Documents
Hiver 2021
TECH 20712 : Gestion des bases de données
Examen final
30 % de la note finale
Cet examen final contient deux parties. Nous vous suggérons d’allouer votre temps
comme suit :
Pour les deux fichiers, inscrivez votre nom et votre matricule dans le titre des fichiers et
dans un en-tête au début des fichiers. Identifiez clairement les questions auxquelles
vous répondez.
Question 2 --Question 2
Voilà mon interprétation de la situation… select * from
Sales.SalesOrderDetail
Page 1/5
Partie 1
Question Réponse
1. En UML, une classe fille hérite tous les attributs
de la classe mère dont elle hérite.
2. Les transactions peuvent servir à résoudre la
problématique des accès concurrents à la base de
données.
3. Une fonction définie par l’usager peut retourner
une table virtuelle.
4. Une procédure stockée a toujours un type de
renvoi.
5. L’instruction suivante retournera l’âge moyen par
espèce dans la table :
SELECT PetSpecies,
AVG(PetAge)
FROM Pets
6. Lorsqu’on utilise une sous-requête dans la clause
FROM, il est possible de faire des jointures entre
le résultat de la sous-requête et d’autres tables.
7. Une base de données où on retrouve des
dépendances fonctionnelles transitives n’est pas
conforme à la 2e forme normale.
8. Il est possible d’utiliser une fonction d’agrégation
dans une clause WHERE.
(par ex. WHERE X < AVG(Y))
9. L’API et une interface qui prend place entre la
couche métier et la couche des données.
10. Il est possible de combiner les conditions if et
While ensemble dans le code par exemple :
Declare @valeur int;
Set @valeur =0;
If exists (Select * from Sales.SalesOrderDetails)
Begin
While @valeur < 4
Begin
Instruction…
@valeur = @valeur+2;
End
End
Notez que les patients et les médecins partagent un bon nombre d’attributs
L’information sur les visites : Nous voulons garder l’information relative à chaque
visite, soit la date de la visite, le diagnostic relatif à la visite, la prescription découlant
de la visite le cas échéant.
Pour toutes questions ci-dessus, il est impératif de préciser les hypothèses utilisées
dans le même fichier contenant votre réponse.
1. (12.5 Points) Le directeur des ventes chez AdventureWorks vous demande quelques
dernières requêtes :
Pour tout produit disponible à la vente, obtenez le nombre de fois où le prix de
vente a été modifié ou mis à jour (Cette information se trouve dans la table
Production.ProductCostHistory.)
Ne considérez pas les produits dont le prix de vente n'a jamais été modifié ou mis à
jour.
On vous demande aussi de ne retenir que les produits dont le nombre de
modifications de prix est supérieur à la moyenne du nombre de modifications de
prix.
Votre requête doit afficher uniquement les attributs suivants :
Numéro du produit et Nom du produit, votre information sera affichée de la
manière suivante dans une seule colonne (PN : <Numéro de Produit> ---
Name : <Nom du Produit)> )
ProductID
Nombre de modifications de prix
Triez le jeu de données par selon l’attribut « Nombre de modifications de prix » en
ordre décroissant, puis par ProductID en ordre croissant.
…
2. (5 Points) Le directeur des ventes, vous explique que la nouvelle assistante
administrative n’a pas les droits nécessaires pour accéder aux tables de productions,
il vous demande de lui créer une vue à partir de la réponse de la question 1.
La nouvelle employée n’aura besoin que de rouler la commande suivante :
select * from ModStatsView
…
3. (10 points) Donnez la liste des ventes faites aux clients individuels pour lesquelles le
code postal de livraison diffère du code postal de facturation. Affichez :
Le numéro de facture
Le nom complet du client, en incluant le titre, le prénom, deuxième prénom,
nom de famille et suffixe
Le code postal de livraison
La ville de livraison
Le code postal de facturation
La ville de facturation
4. (12.5 points) Chez Adventureworks, on a remarqué que les frais de livraisons sont
beaucoup plus chers lorsque le BillToAddress et ShipToAddress dans la table de
SalesOrderHeader sont différents.
L’entreprise a donc décidé de charger des frais de 10% supplémentaires aux clients
dont la commande a un BillToAddress est différent du ShipToAddress.
On ne vous demande pas de modifier les tables. On vous demande simplement de
créer une fonction
CalculFraisLivraison (@BillToAddress int ,@ShipToAddress int, @totalDue money)
Dans le résultat final, nous ne voulons voir que les tuples pour lesquels le
DeltaTotalDue est positif
5. (10 points) Pour les produits qu’AdventureWorks vendus à rabais, quelle est la
remise moyenne (« average discount »), en dollars (format monnaie), par catégorie
de produits ? Affichez les détails suivants :
l’id de la catégorie
le nom de la catégorie
la remise moyenne (« average discount ») en dollars (format monnaie)