Stiamo sviluppando un modello di dati per un database di marketing che importerà file di transazioni, clienti, inventario, ecc. e la direttiva è UN processo che funziona per ogni cliente. Ci è stato detto che ogni client avrà diversi layout di importazione e diverse colonne che identificano la chiave primaria di una tabella.
La nostra idea iniziale è di ottenere definizioni dal client su quali colonne rendono un record univoco, archiviarle in una tabella di mappatura e quindi avere tabelle di ricerca che traducono automaticamente quelle chiavi primarie in chiavi sostitutive interne per ogni tabella di destinazione in modo che ogni tabella è conforme a una chiave primaria intera, indipendentemente dal numero di colonne / tipi utilizzati per creare il vero pk.
Il primo problema principale che ho visto è stato quando / se è necessario eseguire il mapping delle tabelle di ricerca per ottenere dati che non sono stati archiviati nel modello dati principale, ma ho la certezza che tutto ciò che vogliamo venga sottoposto a query verrà duplicato nella ricerca e nelle tabelle principali in modo che non dovrebbe essere un problema.
Questo tipo di flessibilità sembra causare gravi limitazioni su:
-
Stack di tecnologia (nessun modo per mappare dinamicamente questi file di importazione SSIS, hanno bisogno di molto SQL dinamico o java / c #)
-
Scalabilità (basata su preoccupazioni precedenti e test iniziali, questo sarebbe difficile scalare senza problemi di velocità)
-
Complessità (stiamo già eseguendo alcune modifiche complesse al codice quando proviamo a implementare tutte queste tabelle con cambiamenti storici logging mantenendo l'associazione alle tabelle di ricerca, ad esempio)
La mia domanda: è fattibile o esiste un'altra soluzione ovvia che ci manca?