debit / credit
This commit is contained in:
147
banque.md
147
banque.md
@@ -141,13 +141,6 @@ erDiagram
|
|||||||
decimal share
|
decimal share
|
||||||
}
|
}
|
||||||
|
|
||||||
exchange_rate {
|
|
||||||
date date PK
|
|
||||||
text currency_code PK
|
|
||||||
decimal rate
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
operation {
|
operation {
|
||||||
bigint id PK
|
bigint id PK
|
||||||
bigint transaction_id FK
|
bigint transaction_id FK
|
||||||
@@ -169,6 +162,146 @@ erDiagram
|
|||||||
|
|
||||||
### 3. Les opérations
|
### 3. Les opérations
|
||||||
|
|
||||||
|
### 4. Les transactions
|
||||||
|
|
||||||
|
|
||||||
|
Chaque opération comporte au moins :
|
||||||
|
|
||||||
|
* un **compte concerné** ;
|
||||||
|
* une **date** ;
|
||||||
|
* un **montant** ;
|
||||||
|
* un **sens** (débit ou crédit).
|
||||||
|
|
||||||
|
|
||||||
|
## **Méthode 1 : montant relatif (positif/négatif)**
|
||||||
|
|
||||||
|
### Exemple
|
||||||
|
|
||||||
|
| id | compte | date | montant |
|
||||||
|
| -- | ------ | ---------- | ------- |
|
||||||
|
| 1 | 123 | 2025-11-06 | +200.00 |
|
||||||
|
| 2 | 123 | 2025-11-07 | -50.00 |
|
||||||
|
|
||||||
|
### Principe
|
||||||
|
|
||||||
|
On stocke un seul champ `montant`.
|
||||||
|
|
||||||
|
* **Crédit** → montant positif
|
||||||
|
* **Débit** → montant négatif
|
||||||
|
|
||||||
|
### ✅ Avantages
|
||||||
|
|
||||||
|
* **Simple à manipuler** pour les calculs (sommes, soldes, agrégations).
|
||||||
|
* Pas besoin de colonne supplémentaire pour le sens.
|
||||||
|
* Représente naturellement le comportement du solde d’un compte.
|
||||||
|
|
||||||
|
### ❌ Inconvénients
|
||||||
|
|
||||||
|
* Le **signe a une signification métier** implicite → risque d’erreur d’interprétation.
|
||||||
|
* **Moins lisible** pour les utilisateurs finaux ou pour des exports comptables.
|
||||||
|
* Pas toujours compatible avec les règles de la **comptabilité en partie double** (où débit et crédit doivent être visibles séparément).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## **Méthode 2 : deux colonnes (débit / crédit)**
|
||||||
|
|
||||||
|
### Exemple
|
||||||
|
|
||||||
|
| id | compte | date | debit | credit |
|
||||||
|
| -- | ------ | ---------- | ----- | ------ |
|
||||||
|
| 1 | 123 | 2025-11-06 | 0.00 | 200.00 |
|
||||||
|
| 2 | 123 | 2025-11-07 | 50.00 | 0.00 |
|
||||||
|
|
||||||
|
### Principe
|
||||||
|
|
||||||
|
Deux colonnes numériques, l’une pour le débit, l’autre pour le crédit.
|
||||||
|
Une seule des deux contient une valeur non nulle.
|
||||||
|
|
||||||
|
### ✅ Avantages
|
||||||
|
|
||||||
|
* Très **clair visuellement** et **conforme aux usages comptables**.
|
||||||
|
* Facilite les **exports vers des logiciels comptables**.
|
||||||
|
* On peut facilement filtrer les débits et crédits séparément.
|
||||||
|
|
||||||
|
### ❌ Inconvénients
|
||||||
|
|
||||||
|
* **Redondance potentielle** (une des deux colonnes sera toujours à zéro).
|
||||||
|
* Les calculs de soldes nécessitent des **expressions plus complexes** :
|
||||||
|
`SUM(credit) - SUM(debit)`
|
||||||
|
* Risque d’incohérence si les deux colonnes contiennent des valeurs remplies par erreur.
|
||||||
|
|
||||||
|
|
||||||
|
## **Méthode 3 : montant absolu + colonne sens ('D' / 'C')**
|
||||||
|
|
||||||
|
### Exemple
|
||||||
|
|
||||||
|
| id | compte | date | montant | sens |
|
||||||
|
| -- | ------ | ---------- | ------- | ---- |
|
||||||
|
| 1 | 123 | 2025-11-06 | 200.00 | C |
|
||||||
|
| 2 | 123 | 2025-11-07 | 50.00 | D |
|
||||||
|
|
||||||
|
### Principe
|
||||||
|
|
||||||
|
Le montant est toujours positif.
|
||||||
|
Le sens est indiqué par une lettre (`D` ou `C`).
|
||||||
|
|
||||||
|
### ✅ Avantages
|
||||||
|
|
||||||
|
* **Lisible** et **intuitif** : correspond au vocabulaire métier.
|
||||||
|
* Facilite la lecture humaine et les exports comptables.
|
||||||
|
* Pas d’ambiguïté sur le signe numérique.
|
||||||
|
|
||||||
|
### ❌ Inconvénients
|
||||||
|
|
||||||
|
* Nécessite une **jointure logique** du sens pour les calculs :
|
||||||
|
`SUM(CASE WHEN sens='C' THEN montant ELSE -montant END)`
|
||||||
|
* Moins direct pour les traitements purement mathématiques.
|
||||||
|
* L’usage de lettres rend le **stockage un peu moins compact** (mais négligeable en pratique).
|
||||||
|
|
||||||
|
|
||||||
|
## **Méthode 4 : montant absolu + colonne sens numérique (1 / -1)**
|
||||||
|
|
||||||
|
### Exemple
|
||||||
|
|
||||||
|
| id | compte | date | montant | sens |
|
||||||
|
| -- | ------ | ---------- | ------- | ---- |
|
||||||
|
| 1 | 123 | 2025-11-06 | 200.00 | 1 |
|
||||||
|
| 2 | 123 | 2025-11-07 | 50.00 | -1 |
|
||||||
|
|
||||||
|
### Principe
|
||||||
|
|
||||||
|
Le montant est toujours positif, et une colonne numérique `sens` vaut `1` (crédit) ou `-1` (débit).
|
||||||
|
|
||||||
|
### ✅ Avantages
|
||||||
|
|
||||||
|
* **Compact et performant** pour les calculs :
|
||||||
|
`SUM(montant * sens)` donne directement le solde.
|
||||||
|
* Moins d’ambiguïté qu’un signe caché dans le montant.
|
||||||
|
* Combine la **rigueur du modèle mathématique** avec la **clarté du stockage absolu**.
|
||||||
|
|
||||||
|
### ❌ Inconvénients
|
||||||
|
|
||||||
|
* **Moins lisible** pour un utilisateur non technique.
|
||||||
|
* Moins standard pour la comptabilité classique (on préfère `D` / `C`).
|
||||||
|
* Nécessite une convention claire sur la signification de `1` et `-1`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Synthèse comparative
|
||||||
|
|
||||||
|
| Méthode | Structure | Lisibilité | Facilité calculs | Conformité comptable | Risque d'erreur |
|
||||||
|
| ------- | ---------------------- | ---------- | ---------------- | -------------------- | --------------- |
|
||||||
|
| 1 | montant relatif (+/-) | ★☆☆ | ★★★ | ★☆☆ | Moyen |
|
||||||
|
| 2 | débit / crédit séparés | ★★★ | ★☆☆ | ★★★ | Faible |
|
||||||
|
| 3 | valeur + sens 'D'/'C' | ★★★ | ★★☆ | ★★★ | Faible |
|
||||||
|
| 4 | valeur + sens 1/-1 | ★★☆ | ★★★ | ★★☆ | Moyen |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### 5. Les devises
|
||||||
|
|
||||||
```mermaid
|
```mermaid
|
||||||
erDiagram
|
erDiagram
|
||||||
person {
|
person {
|
||||||
|
|||||||
Reference in New Issue
Block a user