SQL Server Database Project (SSDT)
Solution : EcbFxReference
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
- Versionnement du schéma via Git
- Déploiement reproductible
- Approche Database-as-Code
- Scripts de post-déploiement pour l’initialisation / seed
Organisation par type d’objet SQL :
dbo/
├── Functions/
├── Indexes/
├── Stored Procedures/
├── Tables/
└── Types/
└── Views/
• • •
DEVISESDEVISES_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).
• • •
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 |
• • •
| 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.
• • •
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.
• • •
| 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 |
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.
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é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. |
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é
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.
• • •
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.
• • •
Le déploiement se fait via Visual Studio 2022 avec des fichiers .publish.xml par environnement.
• • •
EcbFxReference
├── ExchangeRate.Database ← Base technique des taux ECB (persist/compute)
├── ExchangeRate.SSIS ← Orchestration ETL
└── SalesMgmt.Database ← Base cible métier (Sales / tarification)
SalesMgmt.Databasereprésente la couche métier : structuration, historisation et exploitation des données utiles aux processus commerciaux.