diff --git a/banque.glossaire.md b/banque.glossaire.md new file mode 100644 index 0000000..ad71336 --- /dev/null +++ b/banque.glossaire.md @@ -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 diff --git a/banque.md b/banque.md index 7350d3a..4762c67 100644 --- a/banque.md +++ b/banque.md @@ -1,21 +1,27 @@ # 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. - Utiliser les **contraintes d’intégrité** pour garantir la cohérence des données. - Manipuler des **jointures** et des **relations n–n**. - 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 : - -1. Les clients de la banque, appelés titulaires (_holders_), -2. Les comptes bancaires (_accounts_), -3. Le lien entre les titulaires et les comptes. +Pour les entités vous utiliserez le singuler et écrirez le tout en minuscule. ## 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 @@ -61,7 +67,7 @@ La clé étrangère `references holder(id)` dans `person`. - Chaque titulaire peut détenir un ou plusieurs compte. - 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. - 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 : - ```sql - create or replace procedure nom_procedure(paramètres) - language plpgsql - as $$ - declare - -- variables locales - begin - -- instructions SQL - end; - $$; - ``` +```sql +create or replace procedure nom_procedure(paramètres) +language plpgsql +as $$ +declare + -- variables locales +begin + -- instructions SQL +end; +$$; +``` 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 ``` + +## 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. diff --git a/postgresql.Dockerfile b/postgresql.Dockerfile index 2c06488..4c1ea1f 100644 --- a/postgresql.Dockerfile +++ b/postgresql.Dockerfile @@ -134,7 +134,11 @@ RUN set -eux; \ # ca-certificates: for accessing remote raster files; # fix: https://github.com/postgis/docker-postgis/issues/307 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/* # Copier uniquement les fichiers installés depuis le builder