Skip to content

Latest commit

 

History

History
194 lines (127 loc) · 15.1 KB

File metadata and controls

194 lines (127 loc) · 15.1 KB

📦 SalesMgmt.Database

SQL Server Database Project (SSDT)
Solution : EcbFxReference

🎯 Objectif du projet

SalesMgmt.Database est un projet SQL Server Data Tools (SSDT) destiné à versionner et déployer le schéma de la base SalesMgmtDB, qui constitue la base cible métier de la solution.

Il permet de :

  • 🧾 Stocker les données métier de référence exploitées par l’ERP / le contexte Sales
  • 💱 Intégrer et historiser les taux de change utiles aux usages tarifaires et commerciaux
  • 🧠 Garantir une structure cohérente, traçable et déployable en multi-environnements

✅ Garanties apportées

  • Versionnement du schéma via Git
  • Déploiement reproductible
  • Approche Database-as-Code
  • Scripts de post-déploiement pour l’initialisation / seed

🏗 Architecture du projet

Organisation par type d’objet SQL :

dbo/
├── Functions/
├── Indexes/
├── Stored Procedures/
├── Tables/
└── Types/
└── Views/

• • •

🗄 Tables principales

  • DEVISES
  • DEVISES_HISTO
Table Rôle
DEVISES Référentiel des devises utilisées côté métier (contexte Sales)
DEVISES_HISTO Historisation des valeurs / évolutions (ex. taux ou attributs de devise) pour audit et traçabilité

🎯 Objectif : disposer d’un modèle métier compatible avec les besoins d’exploitation (tarification, reporting, audit).

• • •

🧩 Types SQL (standardisation du modèle)

Le projet définit des types SQL pour homogénéiser les colonnes, améliorer la lisibilité du schéma et limiter les divergences d’implémentation.

Type Rôle
BOOL Type métier pour les drapeaux logiques (ex. actif/inactif)
ID Standardise les identifiants techniques/métier

• • •

📊 Vues métier

Vue Rôle Correspondance dans ExchangeRateDB
vw_devises_last_rate Dernier taux connu par devise vw_exchange_rate_series_last_rate
vw_devises_stable_rates Calcul des taux stables (30/60/90 jours) vw_exchange_rate_series_stable_rates
vw_devises_tariff_rates Taux tarifaire avec logique de fallback vw_exchange_rate_series_tariff_rates

✔ La même logique métier est implémentée dans les deux bases (ExchangeRateDB et SalesMgmtDB) pour garantir une cohérence fonctionnelle et faciliter les audits croisés.

• • •

🔄 Synchronisation des taux de change (ECB)

SalesMgmt.Database est la base cible qui utilise les données de la base technique de persistance des taux ECB ExchangeRate.Database.
La procédure dbo.usp_Merge_DevisesHisto_FromEcbDaily assure la synchronisation des taux de change journaliers provenant de ExchangeRatesDB vers la table métier dbo.DEVISES_HISTO.
Elle s'appuie sur la fonction table dbo.fn_EcbDailyRates_Prepared pour préparer et standardiser les données source (mapping des devises, calcul des dates de validité, calcul du taux inverse). La procédure implément un MERGE UPSERT paramétrable par plage de dates afin d’insérer les nouveaux taux et mettre à jour uniquement les enregistrements modifiés.
Cette approche garantit une synchronisation fiable, claire et maintenable dans le cadre du projet SSDT.

• • •

📦 Fonctions TVF

Fonction table Rôle
fn_EcbDailyRates_Prepared Préparer et standardiser les données de taux de change issues de la base technique ExchangeRatesDB
fn_Audit_EcbVsDevisesHisto Comparer les données de taux de change entre la source ECB et la table métier DEVISES_HISTO pour identifier les écarts et anomalies

▶ Utilisation de dbo.fn_EcbDailyRates_Prepared

La fonction table en ligne dbo.fn_EcbDailyRates_Prepared retourne un jeu de données préparé à partir des taux journaliers ECB (mapping des devises, normalisation des dates, calcul du taux inverse).
Elle s’utilise dans une requête SELECT en lui passant une plage de dates dans les paramètres @FromDate et @ToDate qui définissent la période à traiter.:

SELECT *
FROM dbo.fn_EcbDailyRates_Prepared('2025-01-01', '2025-12-31');

🎯 Encapsule la logique de transformation des taux ECB et fournit un jeu de données standardisé, prêt à être synchronisé dans la table métier.

▶ Utilisation de dbo.fn_Audit_EcbVsDevisesHisto

La fonction table en ligne dbo.fn_Audit_EcbVsDevisesHisto retourne un dataset tabulaire qui sert d’audit sans modifier aucune donnée.

DECLARE @FromDate date = DATEADD(day, -30, CAST(GETDATE() AS date));
DECLARE @ToDate   date = CAST(GETDATE() AS date);

SELECT *
FROM dbo.fn_Audit_EcbVsDevisesHisto(@FromDate, @ToDate)
WHERE Status <> 'OK';

🎯 Son objectif est de voir OK / manquant / en trop / mismatch pour vérifier que tout a été transféré.

• • •

⚙️ Procédures stockées

Procédure Rôle
usp_Merge_DevisesHisto_FromEcbDaily Synchroniser l’historique des taux de change dans la base métier SalesMgmtDB à partir des données sources de la base technique ExchangeRatesDB.
usp_UpdateDevises_FromRatesViews Mettre à jour les données de la table DEVISES à partir des vues de taux.

▶ Utilisation de dbo.usp_Merge_DevisesHisto_FromEcbDaily

La procédure peut être exécutée sans paramètres pour traiter automatiquement l’intégralité de la plage de dates disponible en source :

EXEC dbo.usp_Merge_DevisesHisto_FromEcbDaily;

Ou avec paramètres pour limiter le traitement à une période spécifique :

EXEC dbo.usp_Merge_DevisesHisto_FromEcbDaily
     @FromDate = '2025-01-01',
     @ToDate   = '2025-12-31';

En l’absence de dates, la procédure calcule automatiquement les bornes minimales et maximales disponibles ; lorsqu’une plage est fournie, seules les données comprises dans cet intervalle sont synchronisées.

Architecture SQL

🔹 fn_EcbDailyRates_Prepared → transformation

🔹 usp_Merge_DevisesHisto_FromEcbDaily → synchronisation

🔹 fn_Audit_EcbVsDevisesHisto → contrôle qualité

▶ Utilisation de dbo.usp_UpdateDevises_FromRatesViews

La procédure est conçue pour mettre à jour et synchroniser les données de la table DEVISES à partir des vues de taux (dbo.vw_devises_last_rate et dbo.vw_devises_tariff_rates).
Elle ne traite que les devises actives (DEVISACTIVE = 'O') et évite les écritures inutiles si aucune valeur ne change.

EXEC dbo.usp_UpdateDevises_FromRatesViews;

👉 Est la couche de persistance et de synchronisation du pipeline.

• • •

🧱 Post-déploiement : Script.PostDeployment.sql

Le script de post-déploiement permet de compléter l’installation après publication :

  • Initialisation de données de référence (seed)
  • Mise en place de valeurs par défaut métier

🎯 Objectif : garantir une base opérationnelle immédiatement après déploiement, sans intervention manuelle.

• • •

🚀 Déploiement

Le déploiement se fait via Visual Studio 2022 avec des fichiers .publish.xml par environnement.

• • •

📊 Positionnement dans la solution EcbFxReference

EcbFxReference
├── ExchangeRate.Database   ← Base technique des taux ECB (persist/compute)
├── ExchangeRate.SSIS       ← Orchestration ETL
└── SalesMgmt.Database      ← Base cible métier (Sales / tarification)

SalesMgmt.Database représente la couche métier : structuration, historisation et exploitation des données utiles aux processus commerciaux.