Banque
This commit is contained in:
9
banque.glossaire.md
Normal file
9
banque.glossaire.md
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
# Glossaire
|
||||||
|
|
||||||
|
Français | Anglais
|
||||||
|
--- |---
|
||||||
|
compte | account
|
||||||
|
titulaire de compte | account holder
|
||||||
|
solde | balance
|
||||||
|
|
||||||
|
Source : Glossaire bilingue des termes de la microfinance par le CGAP (Consultative Group to Assist the Poor) - Cercle de réflexion de Washington, D.C. https://www.cgap.org/research/publication/cgap-glossary-of-microfinance-terms-english-to-french
|
||||||
54
banque.md
54
banque.md
@@ -1,21 +1,27 @@
|
|||||||
# Modélisation d'un système bancaire
|
# Modélisation d'un système bancaire
|
||||||
|
|
||||||
|
Une banque locale souhaite informatiser la gestion de ses titulaires et de leurs comptes.
|
||||||
|
|
||||||
|
Vous êtes chargé(e) de concevoir et d’implémenter le schéma relationnel de base permettant de gérer :
|
||||||
|
|
||||||
|
1. Les clients de la banque,
|
||||||
|
2. Les comptes bancaires,
|
||||||
|
3. Le lien entre les titulaires et les comptes.
|
||||||
|
|
||||||
|
L'objectif de ces travaux pratiques est de :
|
||||||
|
|
||||||
- Concevoir un **modèle relationnel** à partir d’un scénario réaliste.
|
- Concevoir un **modèle relationnel** à partir d’un scénario réaliste.
|
||||||
- Utiliser les **contraintes d’intégrité** pour garantir la cohérence des données.
|
- Utiliser les **contraintes d’intégrité** pour garantir la cohérence des données.
|
||||||
- Manipuler des **jointures** et des **relations n–n**.
|
- Manipuler des **jointures** et des **relations n–n**.
|
||||||
- Comprendre la notion d’**héritage logique** en base de données.
|
- Comprendre la notion d’**héritage logique** en base de données.
|
||||||
|
|
||||||
Une banque locale souhaite informatiser la gestion de ses titulaires et de leurs comptes.
|
La diffusion de cette application est internationale, vous vous efforcerez d'utiliser des termes anglais pour nommer les entités et les propriétés. Réferrez pour cela vous au [glossaire](banque.glossaire.md)
|
||||||
|
|
||||||
Vous êtes chargé(e) de concevoir et d’implémenter le schéma relationnel de base permettant de gérer :
|
Pour les entités vous utiliserez le singuler et écrirez le tout en minuscule.
|
||||||
|
|
||||||
1. Les clients de la banque, appelés titulaires (_holders_),
|
|
||||||
2. Les comptes bancaires (_accounts_),
|
|
||||||
3. Le lien entre les titulaires et les comptes.
|
|
||||||
|
|
||||||
## 1. Les titulaires
|
## 1. Les titulaires
|
||||||
|
|
||||||
Un titulaire (_holder_) peut être une personne physique (_person_) ou une entreprise (_company_).
|
Un clients de la banque est appelé un titulaire. Il peut être une personne physique ou une entreprise.
|
||||||
|
|
||||||
### 1.1 Exemple de données
|
### 1.1 Exemple de données
|
||||||
|
|
||||||
@@ -61,7 +67,7 @@ La clé étrangère `references holder(id)` dans `person`.
|
|||||||
|
|
||||||
- Chaque titulaire peut détenir un ou plusieurs compte.
|
- Chaque titulaire peut détenir un ou plusieurs compte.
|
||||||
- Un compte bancaire doit pouvoir appartenir à un ou plusieurs titulaires (compte individuel / compte joint).
|
- Un compte bancaire doit pouvoir appartenir à un ou plusieurs titulaires (compte individuel / compte joint).
|
||||||
- Chaque compte dispose d’un numéro de compte (_account number_) unique, d’un solde, d'une date d'ouverture et une date de clôture.
|
- Chaque compte dispose d’un numéro de compte (_account number_) unique, d’un solde (_balance_) et d'une date d'ouverture.
|
||||||
- Le solde des comptes ne peuvent être négatifs.
|
- Le solde des comptes ne peuvent être négatifs.
|
||||||
- Dans le cas d'un compte joint, les parts (_share_) de propriété d'un compte doivent pouvoir être précisées.
|
- Dans le cas d'un compte joint, les parts (_share_) de propriété d'un compte doivent pouvoir être précisées.
|
||||||
|
|
||||||
@@ -112,17 +118,17 @@ Cette procédure doit :
|
|||||||
|
|
||||||
En PL/pgSQL les **procédures** s’écrivent :
|
En PL/pgSQL les **procédures** s’écrivent :
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
create or replace procedure nom_procedure(paramètres)
|
create or replace procedure nom_procedure(paramètres)
|
||||||
language plpgsql
|
language plpgsql
|
||||||
as $$
|
as $$
|
||||||
declare
|
declare
|
||||||
-- variables locales
|
-- variables locales
|
||||||
begin
|
begin
|
||||||
-- instructions SQL
|
-- instructions SQL
|
||||||
end;
|
end;
|
||||||
$$;
|
$$;
|
||||||
```
|
```
|
||||||
|
|
||||||
Pour afficher un message de réussite :
|
Pour afficher un message de réussite :
|
||||||
|
|
||||||
@@ -234,3 +240,13 @@ Doit refuser la création avec une erreur claire :
|
|||||||
```
|
```
|
||||||
ERROR: La somme des parts (1.1000) doit être égale à 1.0000
|
ERROR: La somme des parts (1.1000) doit être égale à 1.0000
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## La double écriture comptable
|
||||||
|
|
||||||
|
Jusqu’à présent, les dépôts et retraits modifiaient directement le solde d’un compte.
|
||||||
|
Mais dans un vrai système bancaire ou comptable, chaque opération financière doit être enregistrée en double :
|
||||||
|
|
||||||
|
➕ Un débit sur un compte (celui qui reçoit)
|
||||||
|
➖ Un crédit sur un autre (celui qui cède)
|
||||||
|
|
||||||
|
La somme des débits doit toujours être égale à la somme des crédits.
|
||||||
|
|||||||
@@ -134,7 +134,11 @@ RUN set -eux; \
|
|||||||
# ca-certificates: for accessing remote raster files;
|
# ca-certificates: for accessing remote raster files;
|
||||||
# fix: https://github.com/postgis/docker-postgis/issues/307
|
# fix: https://github.com/postgis/docker-postgis/issues/307
|
||||||
ca-certificates \
|
ca-certificates \
|
||||||
postgresql-postgis; \
|
postgresql-postgis
|
||||||
|
|
||||||
|
RUN set -eux; \
|
||||||
|
apt-get install -y --no-install-recommends \
|
||||||
|
postgresql-18-pglogical; \
|
||||||
rm -rf /var/lib/apt/lists/*
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
# Copier uniquement les fichiers installés depuis le builder
|
# Copier uniquement les fichiers installés depuis le builder
|
||||||
|
|||||||
Reference in New Issue
Block a user