On désire réalisation une BD permettant de gérer les comptes bancaires des clients selon les modalités suivantes :
Chaque client possède un compte courant et éventuellement un compte d'épargne.
Un compte est identifié par un numéro unique composé d'un numéro de pays, d'un numéro de ville (relatif au pays), d'un numéro d'agence (relatif à la ville), et d'un numéro propre (fourni par l'agence). A des fins d'identification du compte par un opérateur humain, on gardera dans la BD un intitulé pour les pays, villes et agences.
Il est possible de faire des transferts d'un compte sur l'autre
Il est possible de débiter (enlever) de l'argent depuis le compte courant
Il est possible de créditer (ajouter) de l'argent sur les deux comptes
Les comptes doivent toujours être positifs
On ne garde pas la mémoire des opérations, seules les soldes sur les comptes sont gérés
Un client est décrit par son nom, son prénom, sa civilité.
Réaliser la conception complète de la BD
La conception complète signifie le MCD, le MLD et et le code SQL de création de l'implémentation physique.
Soient les événements suivants survenant sur la BD :
Le client Robert Dupont est créé dans l'agence du centre ville de Compiègne, qui vient d'ouvrir.
Le client Alphonse Durand est créé dans la même agence, mais il veut également un compte d'épargne sur lequel il dépose tout de suite 1000
Le client Robert Dupont dépose deux chèques de 100 sur son compte courant.
Le client Alphonse Durand transfère 500 de son compte d'épargne à son compte courant.
Écrire le code SQL permettant de traiter ces événements, sans utiliser de transactions
Suite à des problèmes de coupure réseaux, on constate des problèmes sur les comptes. Ainsi suite à l'exécution des opérations précédentes, la requête suivante renvoie des résultats erronés.
SELECT tCompteCourant.fkClient AS N, tCompteCourant.aSolde + COALESCE(tCompteEpargne.aSolde,0) AS SoldeDeTousComptes
FROM tCompteCourant LEFT JOIN TCompteEpargne
ON tCompteCourant.fkClient=TCompteEpargne.fkClient;
N | SoldeDeTousComptes |
---|---|
1 | 100 |
2 | 500 |
Réécrivez le résultat de la requête avec les valeurs qui étaient attendues.
La fonction COALESCE (x, y, z...) renvoie comme valeur le premier de ses paramètres non NULL.
Expliquer à quoi peuvent être dus les problèmes rencontrés.
Proposer une solution permettant d'assurer la cohérence des opérations, en aménageant cotre code SQL.