Bonjour à tous,
Je reviens avec une autre réponse à la question que j'avais posée dans ce fil.
Comment créer une table de conversion de devises?
C'est en allant sur d'autres sites de création de bases de données orientées finances que j'ai compris comment faire.
Ce qu'il manquait, c'était un suivi dans le temps des valeurs de conversions. Si je fais une opération de change en janvier 2018, la même opération de change en novembre 2020 sera très différente...
Voici la réponse que je propose:
J'ai créé 3 tables:
Pays_tbl contenant
id_pays Clé Primaire J'ai utilisé les codes de la table ISO 3166-1
nom_pays VARCHAR
code_pays Texte fixe 2 caractères tirés de la même table ISO 3166
id_devise Clé externe de
id_devise dans Devises_tbl
Cette table est optionnelle mais elle peut servir pour un projet plus complexe.
Devises_tbl
id_devise Clé Primaire / J'en ai profité pour utiliser le code numérique ISO 4217 officiel
nom_devise VARCHAR
code_devise Texte fixe 3 caractères issus aussi de l'ISO 4217
TauxDeChanges_tbl
de_devise_id Clé externe de
id_devise dans Devises_tbl
a_devise_id Clé externe de
id_devise dans Devises_tbl
Date_taux DATE d'actualisation du taux
taux DECIMAL, 6 décimales (ou plus, je dois vérifier la précision des taux de change, notamment entre les devises "bananières" et les devises "1er mondes" )
Avec une
clé primaire composée de
de_devise_id +
a_devise_id +
Date_taux créant pour chaque paire à une date donnée une clé unique.
Par exemple, [de 840 a 978, 11/11/20] (840 =
USD et 978 =
EUR)
La même paire mais inversée pour une même date peut exister.
[de 978 a 840, 11/11/20]
mais saisir une seconde fois [de 840 a 978, 11/11/20] devrait générer une erreur.
Le fait de pouvoir saisir les taux de change dans un sens et dans l'autre pourrait apparaître redondant mais, en réalité, ce sont presque toujours des taux de change bancaires qui imposent leurs commissions et donc rendent les taux différents dans un sens et dans l'autre (taux aller + commissions différent de taux retour + commissions).
(Ce n'est pas forcément comme une table des distances entre villes qui peut se passer de la moitié du tableau).
Ainsi, je peux saisir les taux entre n'importe quelles devises et, surtout, archiver les anciens taux pour des opérations antérieures et utiliser les nouveaux taux pour des opérations actuelles.
Salutations
