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