Informatique Pour Tous Interrogation n°5
Transcription
Informatique Pour Tous Interrogation n°5
Nom : Prénom : Informatique Pour Tous Interrogation n°5 Soit la base de données relationnelle BANQUE constituée des trois relations (ou tables) suivantes : CLIENTS (idclient : int, nom, prenom, ville,) idclient : identificateur du client ; nom : nom du client ; prenom : prénom du client ; ville : lieu d’habitation du client. (idcompte : int, idclient : int, type : text) idcompte : identificateur du compte ; idclient : identificateur du propriétaire du compte ; type : type de compte. (NB : exemples de type de compte : livret A, Compte courant, PEL,PEA ...) COMPTES (idop : int, date : text, idcompte : int, montant : decimal, information : text,) idop : identificateur de l’opération; date : date et heure précise de l’opération idcompte : identificateur du compte ; montant : valeur de l’opération (positive si c’est un crédit, négative si c’est un débit) . information : information concernant l’opération (NB : deux opérations ne peuvent pas avoir la même date) OPERATIONS I-Généralités : 1) L’attribut idclient est-il une clé candidate de la relation COMPTES (justifier clairement) ? Un client peut avoir plusieurs comptes donc l’attribut idclient peut avoir plusieurs fois la même valeur. idclient n’est donc pas une clé candidate. 2) Donner le(s) clé(s) primaire(s) possible(s) de la relation OPERATIONS (justifier clairement) ? Une clé primaire est une clé candidate donc un attribut dont toutes les valeurs sont différentes. C’est le cas des attributs idop et date, mais pas de idcompte (le même compte a plusieurs opérations) ou montant et information (on peut avoir les mêmes valeurs pour ces opérations). 3) Quels sont les domaines des attributs nom, prenom et ville de la relation CLIENTS. Le domaine de ces 3 attributs est text (ou chaîne de caractères). Informatique Pour Tous page 1/5 PCSI1 2014-2015 II-Algèbre relationnelle 1) Traduire en langage courant (français) les requêtes suivantes : a) R1 = πidop, idcompte, montant (σmontant >1000 (OPERATIONS)) R1 : relation qui donne la liste des identificateurs des opérations de credit dont le montant dépasse strictement 1000 ainsi que l’identificateur de compte correspondant et la valeur du crédit. b) R2 = πidclient, montant(COMPTES ⋈ idcompte = idcompte R1) R2 : relation qui donne l’identificateur des clients ayant fait des opérations de crédit dont le montant dépasse strictement 1000 et la valeur du crédit correspondant. c) R3 = πnom, ville, montant(CLIENTS ⋈ CLIENTS.idclient = R2.idclient R2) R3 : relation qui donne le nom et la ville des clients ayant fait des opérations de crédit dont le montant dépasse strictement 1000 et la valeur du crédit correspondant. d) R4 = π ville, sum(montant)(ville γ sum(montant)(R3)) R4 : relation qui donne pour chaque ville, la somme des opérations de credits qui dépassent 1000. 2) Écrire la requête de l’algèbre relationnelle qui permet d’obtenir a) L’idclient et la ville du client nommé « Picsou » πidclient, ville(σnom = ‘Picsou’(CLIENTS)) b) La liste des différents types de compte du client nommé « Picsou » πtype (COMPTES ⋈ COMPTES.idclient=CLIENTS.idclient (πidclient,(σnom = ‘Picsou’(CLIENTS)))) III-Langage SQL Écrire la requête en SQL qui permet d’obtenir : 1) Les nom et prénom de tous les clients de la base. SELECT nom, prenom FROM clients 2) Les nom et prénom de tous les clients de la base habitant à “Donaldville”. SELECT nom, prenom FROM clients WHERE ville = ‘Donaldville’ 3) Les idclients des personnes possédant un Livret A SELECT idclient FROM comptes WHERE type = ‘Livret A’ 4) Les idop de type débit sur le compte dont l’idcompte vaut 1 SELECT idop FROM operations WHERE idcompte = 1 AND montant < 0 5) Les idclients des personnes possédant un Livret A SELECT idclient FROM comptes WHERE type = ‘Livret A’ Informatique Pour Tous page 2/5 PCSI1 2014-2015 6) Les idclients des personnes ne possédant aucun Livret A. SELECT idclient FROM comptes EXCEPT SELECT idclient FROM comptes WHERE type = ‘Livret A’ 7) Le solde (= somme de toutes les opérations effectuées) de chaque compte avec le numéro d’identification du compte correspondant. SELECT idcompte, SUM(montant) FROM operations GROUP BY idcompte 8) Le nombre moyen de comptes possédé par un client SELECT AVG(nbcompte) FROM (SELECT idclient, COUNT(*) AS nbcompte FROM comptes GROUP BY idclient) 9) Le solde de chaque compte, uniquement pour les comptes débiteurs. SELECT idcompte, SUM(montant) FROM operations GROUP BY idcompte HAVING SUM(montant) < 0 10) Le montant en dollars de chaque opération, en supposant que le taux de conversion soit une constante valant 1.3. Nommez cette colonne montantUSD SELECT idop, montant * 1.3 as USD FROM operations 11) La liste de ses comptes (identifiés par leur idcompte) pour chaque personne définie par son couple nom, prénom, SELECT nom, prenom, idcompte FROM Clients , Comptes WHERE clients.idclient = comptes.idclient ou bien SELECT nom, prenom, idcompte FROM Clients JOIN Comptes ON clients.idclient = comptes.idclient 12) La liste des idcomptes qui ont pour propriétaire une personne dont le prénom est “Balthasar”. SELECT idcompte FROM Clients , Comptes WHERE clients.idclient = comptes.idclient AND prenom = ‘Balthasar’ ou bien SELECT idcompte FROM Clients JOIN Comptes ON clients.idclient = comptes.idclient WHERE prenom = ‘Balthasar’ 13) La liste des opérations (montant et informations) sur chaque compte de Balthasar Picsou.. SELECT information, montant FROM Clients Cl , Comptes Co, Operations Op WHERE Cl.idclient = Co.idclient AND Co.idcompte = Op.idcompte AND prenom = ‘Balthasar’ AND nom = ‘Picsou’ Informatique Pour Tous page 3/5 PCSI1 2014-2015 14) Les nom et prénom des clients ayant fait au moins une opération de débit sur l’un de leurs comptes. SELECT DISTINCT nom, prenom FROM Clients Cl , Comptes Co, Operations Op WHERE Cl.idclient = Co.idclient AND Co.idcompte = Op.idcompte AND montant <0 15) Le nombre de comptes que possède chaque client identifié par son nom et prénom. SELECT nom, prenom, COUNT(idcompte) FROM Clients , Comptes WHERE clients.idclient = comptes.idclient GROUP BY nom, prenom 16-a) La liste des types de compte sur lesquels au moins une opération a été effectuée (donc tels que le nombre d’opérations effectuées est non nulle) SELECT type FROM Comptes Co1 JOIN Operations Op1 ON Co1.idcompte = Op1.idcompte GROUP BY Co1.type HAVING COUNT (Op1.idop) != 0 b) La liste des types de compte sur lesquels aucune opération n’a été effectuée (on lui affecte alors un attribut de valeur 0). SELECT type,0 FROM Comptes Co2 GROUP BY Co2.type EXCEPT SELECT type,0 FROM Comptes Co1 JOIN Operations Op1 ON Co1.idcompte = Op1.idcompte GROUP BY Co1.type HAVING COUNT (Op1.idop) !=0 c) Le nom et la somme totale disponible pour chaque type de compte. Si un type n’est associé à aucune opération, la valeur associée est nulle. Ainsi, tous les types de compte possibles sont listés. SELECT type, SUM(Op3.montant) FROM Comptes Co3 JOIN Operations Op3 ON Co3.idcompte = Op3.idcompte GROUP BY Co3.type UNION SELECT type,0 FROM Comptes Co2 GROUP BY Co2.type EXCEPT SELECT type,0 FROM Comptes Co1 JOIN Operations Op1 ON Co3.idcompte = Op1.idcompte GROUP BY Co1.type HAVING COUNT(Op1.idop) !=0 Informatique Pour Tous page 4/5 PCSI1 2014-2015 17) La valeur maximale de crédit et de débit pour chaque idcompte. S’il n’y a aucune valeur de crédit ou de débit, alors l’idcompte n’apparaît pas.. SELECT Op1.idcompte, MAX(Op1.montant) FROM Operation Op1 WHERE Op1.montant >0 GROUP BY Op1.idcompte UNION SELECT Op2.idcompte, MIN(Op2.montant) FROM Operation Op2 WHERE Op2.montant < 0 GROUP BY Op2.idcompte 18) Donnez l’idclient possédant le compte avec le plus grand numéro d’idcompte SELECT idclient FROM comptes WHERE idcompte =(SELECT MAX(idcompte) FROM comptes) ou bien SELECT idclient FROM comptes WHERE idcompte =(SELECT MAX(idcompte) FROM comptes) 19) Les idclients des personnes possédant moins de comptes que la moyenne calculée sur l’ensemble de la base de données. SELECT idclient FROM comptes GROUP BY idclient HAVING COUNT(DISTINCT idcompte) < (SELECT COUNT(DISTINCT Co.idcompte) / COUNT(DISTINCT Co.idclient) FROM comptes Co) Informatique Pour Tous page 5/5 PCSI1 2014-2015