[PDF] Bases de Données (BD3) – Corrigé de lexamen (durée : 3 heures)





Previous PDF Next PDF



Cours dAlgèbre I et II avec Exercices CorrigésOM DE VOTRE

est vraie. 3. Exercices Corrigés. Exercice 1. Donner la négation des propositions suivantes : (1) ?x ? IR?y 



Algèbre - Cours de première année

d'une première structure algébrique avec la notion de groupe. site Exo7 toutes les vidéos correspondant à ce cours



ANALYSE MATRICIELLE ET ALGÈBRE LINÉAIRE APPLIQUÉE

Exercice 1. Montrer que dans un groupe l'inverse d'un élément est unique. ... Ces deux références proposent un cours complété d'exercices avec ...



Analyse combinatoire et probabilités - Exercices et corrigés

2 jan. 2016 2.1.16 Exercice Un groupe de 12 personnes doit être partagé en . ... et certaines notions de base (analyse combinatoire et algèbre de Boole).



Examen dalgèbre du 18 juin 2012 durée : 4h Questions de cours

Barême indicatif :question de cours3 points ; exercice 1



Sciences de gestion - Synthèse de cours exercices corrigés

de cours exercices corrigés. Éric DOR. &. Économétrie. Cours et exercices adaptés aux besoins EXERCICE 3 SPÉCIFICATION D'UNE FONCTION DE PRODUCTION.



Exercices Corrigés Matrices Exercice 1 – Considérons les matrices

Puis calculer A-1. Exercice 8 – Appliquer avec précision aux matrices M et N suivantes l'algorithme du cours qui détermine si une matrice est inversible et 



Groupes Examen final + corrigé

11 mai 2016 Les questions de cet exercice sont indépendantes. On attend une rédaction concise et précise. 1. Soit G un groupe abélien a ? G d'ordre m



ficall.pdf

Exercice 2. Démontrer que (1 = 2) ? (2 = 3). Correction ?. [000105]. Exercice 3. Soient les quatre assertions suivantes : ( 



Bases de Données (BD3) – Corrigé de lexamen (durée : 3 heures)

13 jan. 2017 Exercice 1 [Requêtes : 12 points]. Soit la base de données BANQUE contenant les tables suivantes : • AGENCE (*Num_Agence Nom

Université Paris Diderot - L2 Informatique 13 janvier 2017 Bases de Données (BD3) - Corrigé de l"examen (durée : 3 heures) Documents autorisés : trois feuilles A4 recto-verso et personnelles. Les ordinateurs et les téléphones mobiles sont interdits.

Le barême est donné à titre indicatif.

Exercice 1[Requêtes:12 points]

Soit la base de donnéesBANQUEcontenant les tables suivantes :

AGENCE (*Num_Agence, Nom, Ville, Actif)

CLIENT (*Num_Client, Nom, Prenom, Ville)

COMPTE (*Num_Compte, Num_Agence#, Num_Client#, Solde) EMPRUNT (*Num_Emprunt, Num_Agence#, Num_Client#, Montant)

Les clefs primaires sont précédées d"une étoile (*) et les clefs étrangères sont suivies d"un

astérisque (#). 1. Sans utiliser DISTINCT, donnez une requête équiv alenteen SQL :

SELECT DISTINCT Num_Client

FROM COMPTE

WHERE solde < 1000

OR solde > 100000 ;

Une première solution exploite le fait que l"opérateur d"union est un opérateur ensem- bliste et élimine donc les doublons : (SELECT Num_Client

FROM COMPTE

WHERE solde < 1000)

UNION (SELECT Num_Client

FROM COMPTE

WHERE solde > 100000) ;

Une seconde solution détourne leGROUP BY(utilisé d"ordinaire dans le cadre des re- quêtes d"agrégation) :

SELECT Num_Client

FROM COMPTE

WHERE solde < 1000

OR solde > 100000

GROUP BY Num_Client ;

Une troisième solution exploite le fait que Num_Client est clef primaire de client : 1

SELECT Num_Client

FROM CLIENT

WHERE Num_Client IN

(SELECT Num_Client

FROM COMPTE

WHERE solde < 1000

OR solde > 100000) ;

J"ai également vu cette solution, un peu laborieuse mais correcte (intersect est un opérateur ensembliste et élimine donc les doublons) : (SELECT Num_Client

FROM COMPTE

WHERE solde < 1000 OR solde > 100000)

INTERSECT

(SELECT Num_Client

FROM COMPTE

WHERE solde < 1000 OR solde > 100000) ;

Une erreur rencontrée fréquemment dans les copies :

SELECT Num_Client

FROM COMPTE

GROUP BY Num_Client

HAVING solde < 1000

OR solde > 100000;

Un attribut figurant dans leHAVINGdoit figurer dans leGROUP BYou bien être utilisé

dans un agrégat. À un même numéro de client peuvent en effet être associés plusieurs

soldes différents (un client peut avoir plusieurs comptes), il y a donc ambiguïté. Attention : ce n"est pas parce que l"information concernant chaque compte d"un client n"apparait qu"une seule fois qu"il n"y a pas de doublons (autre erreur fréquente). Un client peut en effet avoir plusieurs comptes. 2. Ecriv ezles requêtes SQL corresp ondantaux questions suiv antes: (a) Les clien tsn"a yantpas de compt edans la même agence que Liliane Bettencour t. (Tableau résultat :Num_Client). Attention, la question est plus difficile qu"il n"y parait. Malgré les apparences la requête suivante par exemple ne convient pas :

SELECT Num_Client

FROM COMPTE

WHERE Num_Agence NOT IN

(SELECT Num_Agence

FROM COMPTE NATURAL JOIN CLIENT

WHERE Client.Nom='Bettencourt"

AND Client.Prenom='Liliane") ;

Cette requête retourne les clients qui ont un compte dans une agence dans laquelle

Liliane Bettencourt n"a pas de compte.

En fait, il fallait écrire quelque chose de plus compliqué, par exemple : 2

SELECT Num_Client

FROM Client

EXCEPT

(Select Num_Client

FROM Compte

WHERE Num_Agence IN

(SELECT Num_Agence

FROM COMPTE NATURAL JOIN CLIENT

WHERE Client.Nom='Bettencourt"

AND Client.Prenom='Liliane")) ;

ou bien

SELECT Num_Client

FROM Client

WHERE Num_Client NOT IN

(Select Num_Client

FROM Compte

WHERE Num_Agence IN

(SELECT Num_Agence

FROM COMPTE NATURAL JOIN CLIENT

WHERE Client.Nom='Bettencourt"

AND Client.Prenom='Liliane")) ;

Il existe bien sûr plusieurs variantes en fonction de la manière dont sont faites les jointures, e.g., :

SELECT Num_Client

FROM Client

WHERE Num_Client NOT IN

(SELECT Num_Client

FROM Compte C1, Compte C2, Client C

WHERE C1.Num_Agence=C2.Num_Agence

AND C.Num_Client=C2.Num_Client

AND C.Nom='Bettencourt"

AND C.Prenom='Liliane")) ;

Il était également possible d"utiliser NOT EXISTS. (b) Les agences a yantu nactif plus élev éque toutes les ag encesde Sain t-Ouen.( Tableau résultat :Num_Agence).

SELECT Num_Agence

FROM Agence

WHERE Actif > ALL

(SELECT Actif

FROM Agence

WHERE Ville='Saint Ouen") ;

Attention, utiliser> ANYau lieu de> ALLsélectionne les agences ayant un actif plus

élevé qu"au moins une agence de Saint Ouen.

Une solution équivalente à celle utilisant> ALL: 3

SELECT Num_Agence

FROM Agence

WHERE Actif >

(SELECT Max(Actif)

FROM Agence

WHERE Ville='Saint Ouen") ;

Attention, la syntaxe.... > MAX (SELECT Actif FROM...)est incorrecte. (c) Le solde mo yendes comptes clien ts,p ourc haqueagence don tle solde mo yenest supérieur à 10000. (Tableau résultat :Num_Agence,Solde_Moyen).

SELECT AVG(Solde) as Solde_Moyen

FROM Compte

GROUP BY Num_Agence

HAVING AVG(Solde) > 10000 ;

Attention, la requête suivante, qui a l"air innocente, fonctionne avec MySQL, mais pas avec Postgres (ERROR : column "Solde_Moyen" does not exist) :

SELECT AVG(Solde) as Solde_Moyen

FROM Compte

GROUP BY Num_Agence

HAVING Solde_Moyen > 10000 ;

J"ai évidemment compté tous les points, mais l"exemple permet de pointer que le standard de SQL est implémenté différemment d"un système à l"autre. J"ai compté la moitié des points (ce qui était déjà trop gentil) pour la requête suivante, qui est incorrecte (jamais d"agrégat dans le WHERE) :

SELECT AVG(Solde) as Solde_Moyen

FROM Compte

GROUP BY Num_Agence

WHERE AVG(Solde) > 10000 ;

(d) Le nom brede clien tsde l"agence de nom "P aris-BNF"don tla ville n"est pas rensei- gnée dans la relation CLIENT. (Tableau résultat :Nombre).

SELECT COUNT(DISTINCT num_client) as Nombre

FROM Client, Compte, Agence

WHERE Client.Num_client=Compte.Num_client

AND Agence.Num-Agence=Compte.Num-Agence

AND Agence.Nom='Paris-BNF"

AND Client.Ville IS NULL ;

Attention à la jointure naturelle surClientetAgence. La jointure sera entre autres faite sur les deux attributs ville, ce qui forcera une contrainte supplémentaire sur les données (si un client possède un compte dans une agence domiciliée dans une ville différente de celle où il habite, alors ce compte n"apparaitra pas). Attention également à ne pas oublier le mot clefDistinct: nous ne voulons compter chaque client ayant un compte dans l"agence "Paris-BNF" qu"une seule fois, même s"il y possède plusieurs comptes. Une solution alternative sansDistinct: 4

SELECT SUM(num_client) as Nombre

FROM Client

WHERE Ville IS NULL

AND Num_Client IN

(SELECT Num_Client

FROM Compte NATURAL JOIN Agence

WHERE Agence.Nom='Paris-BNF") ;

Attention également à ne pas écrire de condition du type Agence.ville not in (Select Client.ville from Client)(vu dans une copie). Au delà du fait que ce n"est pas ce qu"on veut (la ville pourrait ne pas être renseignée tout en n"appartenant pas à cette table), null not in (...) n"est ni vrai, ni faux, c"est indéterminé, donc la condition ne sera pas satisfaite si l"attribut est nul... Pour la même raison on n"écrit jamaisVILLE = NULL(qui est de toutes façons syntaxiquement incorrect), maisVILLE IS NULL. (e) Les clien tsa yantun compte don tle solde est sup érieurà la somme totale de tous les actifs des agences de Saint-Ouen. (Tableau résultat :Num_Client).

SELECT Num_Client

FROM Compte

WHERE Solde >

(SELECT SUM(Actif)

FROM Agence

WHERE Ville='Saint-Ouen") ;

Si l"on veut éviter les doublons liés au fait qu"un même client pourrait avoir plusieurs comptes satisfaisant cette propriété, on peut utiliser le mot clefDISTINCT:

SELECT DISTINCT Num_Client

FROM Compte

WHERE Solde >

quotesdbs_dbs19.pdfusesText_25
[PDF] Algèbre linéaire 3eme Année Bac +3 Mathématiques

[PDF] algèbre linéaire cours exercices corrigés pdf PDF Cours,Exercices ,Examens

[PDF] algèbre linéaire cours pdf PDF Cours,Exercices ,Examens

[PDF] algèbre linéaire espace vectoriel PDF Cours,Exercices ,Examens

[PDF] Algèbre linéaire et espace vectoriel Bac +1 Mathématiques

[PDF] algèbre linéaire exercices PDF Cours,Exercices ,Examens

[PDF] algebre lineaire exercices corrigés pdf PDF Cours,Exercices ,Examens

[PDF] algèbre linéaire matrice PDF Cours,Exercices ,Examens

[PDF] algèbre linéaire pdf PDF Cours,Exercices ,Examens

[PDF] algèbre linéaire pour les nuls PDF Cours,Exercices ,Examens

[PDF] algèbre linéaire pour les nuls pdf PDF Cours,Exercices ,Examens

[PDF] Algèbre linéaire Sous-espace Bac +3 Mathématiques

[PDF] algebre mathématique PDF Cours,Exercices ,Examens

[PDF] algebre pdf PDF Cours,Exercices ,Examens

[PDF] algebre polynome exercice corrigé PDF Cours,Exercices ,Examens