Normalizzazione di un database senza accesso ai dati di origine?


8

Ho iniziato un nuovo ruolo che si occupa di grandi quantità di dati correlati. La nostra fonte di tutti questi dati sono vari dump di Excel estratti da database a cui non abbiamo accesso. La persona precedente che ricopre questo ruolo ha usato una dozzina di file Excel per raccogliere questi file di dati, manipolarli e creare report.

Ho iniziato a spostare i dump in un database di Access. Ho notato che molti dei dati di Excel sono correlati e probabilmente dovrebbero essere normalizzati. Quello che sto facendo attualmente è creare una tabella per ogni dump di dati, importarli in Access e utilizzare una serie di query per replicare le dozzine di manipolazioni e report dei dati.

Ci sono ancora vantaggi nella normalizzazione dei dati in cui la mia unica fonte sono i dump di Excel da un magazzino?

Come potrei normalizzare i dati, quando non ho la possibilità di cambiare il formato di come mi vengono inviati i dump?

Inoltre, il mio piano (a seconda del budget) è passare dall'accesso a un database MS SQL.


4
Normalmente, NON si desidera normalizzare i dati che non sono transazionali e verranno utilizzati solo per i report. Se i dati provengono da un data warehouse, hanno già fatto il duro lavoro per te. Basta caricarlo in Access e interrogare via.
HardCode

Solo per chiarire, i dump di Excel contengono i dati non elaborati o sono dati pre-aggregati / di report? La fonte di dati proveniente da un fornitore esporta in qualche modo (vale a dire, sei in grado di comunicare con chiunque abbia progettato le strutture dati coinvolte)?
Jon Seigel,

I dump di Excel provengono dal fornitore o dal nostro data warehouse, quindi sono dati non elaborati o dati non elaborati con una quantità minima di trasformazioni (ad es. 0/1 diventa Sì / No o Codice di accesso mappato alla descrizione dell'account). Sono in grado di comunicare con coloro che hanno progettato le strutture di dati ma non ho voce in capitolo su come sono state progettate. Per dare un po 'di contesto, non sono un DBA, ma sto cercando di trovare la soluzione migliore per il nostro team dati i vincoli di bilancio e politici.
pedram,

Risposte:


6

Sì, ci sono vantaggi significativi nella normalizzazione dei dati se si è disposti a fare il lavoro per raggiungerlo e mantenerlo. I due vantaggi fondamentali della normalizzazione sono:

  • Integrità dei dati
  • Flessibilità delle query

L'approccio semplice alla normalizzazione è quello di creare una tabella per ogni persona, luogo, cosa, concetto o evento. In questo modo, hai ogni caratteristica di ogni persona, luogo, cosa, concetto o evento che ti interessa in un unico posto nel database. Il vantaggio dell'integrità dei dati si ottiene quando si inseriscono e si aggiornano i dati. Poiché hai normalizzato non hai copie ridondanti della stessa caratteristica in molti punti del database, ognuno con un valore diverso, che devi ricordare di aggiornare e mantenere sincronizzato. In secondo luogo, esiste un solo posto nel database per programmare i controlli quando si inseriscono o si aggiornano i dati per assicurarsi che siano validi. Poiché i tuoi dati provengono da molti fogli di calcolo Excel, la normalizzazione dei dati ti dà l'opportunità di implementare controlli di integrità dei dati sul carico per assicurarti che l'analisi sia basata su dati accurati. Il vantaggio della flessibilità delle query si ottiene quando si desidera leggere e analizzare i dati. Poiché i dati sono stati normalizzati, è possibile connettere le tabelle in modo flessibile in base alla domanda sui dati a cui si desidera rispondere, incluso solo ciò che è necessario per rispondere alla domanda specifica. In secondo luogo, ciò consente al database di restituire le risposte alle tue domande molto più rapidamente rispetto a se dovesse scansionare tutti i dati, inclusi quelli non rilevanti per la tua domanda, nelle tue tabelle non normalizzate. Poiché i dati sono stati normalizzati, è possibile connettere le tabelle in modo flessibile in base alla domanda sui dati a cui si desidera rispondere, incluso solo ciò che è necessario per rispondere alla domanda specifica. In secondo luogo, ciò consente al database di restituire le risposte alle tue domande molto più rapidamente rispetto a se dovesse scansionare tutti i dati, inclusi quelli non rilevanti per la tua domanda, nelle tue tabelle non normalizzate. Poiché i dati sono stati normalizzati, è possibile connettere le tabelle in modo flessibile in base alla domanda sui dati a cui si desidera rispondere, incluso solo ciò che è necessario per rispondere alla domanda specifica. In secondo luogo, ciò consente al database di restituire le risposte alle tue domande molto più rapidamente rispetto a se dovesse scansionare tutti i dati, inclusi quelli non rilevanti per la tua domanda, nelle tue tabelle non normalizzate.

L'accesso è un DBMS semplificato e include un processore SQL di base che consente di scrivere query e sfruttare quindi i vantaggi dei dati normalizzati. Se alla fine passerai a SQL Server, che è un DBMS con funzionalità complete, la normalizzazione dei dati ora faciliterà la transizione e ti consentirà di sfruttare tutte le funzionalità di SQL Server e la sua ricca implementazione di SQL.

Come ho detto all'inizio, per ottenere questi vantaggi devi essere disposto a fare la programmazione iniziale per tradurre i dati provenienti dai tuoi vari dump Excel e mappare le righe e le colonne in quei fogli di calcolo alle tue tabelle normalizzate. Questo non è un esercizio banale ma fattibile usando la programmazione di Access. Un approccio sarebbe quello di creare tabelle che replicano i dati come nell'origine e caricare i dati in essi. Questi sono conosciuti come palcoscenicotabelle. Una volta che hai i dati non normalizzati nelle tabelle di Access, puoi quindi scrivere più facilmente il codice di accesso usando SQL per estrarre i dati da quelle tabelle di stage, normalizzarli, identificare i problemi di qualità dei dati (ad esempio la stessa caratteristica in due diversi dump Excel che dovrebbero avere lo stesso valore, ma non) e caricarlo nelle tabelle normalizzate. Questo è il metodo comune per normalizzare i dati provenienti da una fonte non normalizzata molto comune nei data warehouse basati sull'area tematica.

Troverai che questo ulteriore livello di sforzo ne varrà la pena anche se una volta che avrai dati normalizzati di alta qualità nel tuo database di accesso. Riferisci che i consumatori vedranno che sei un vero professionista dei dati quando mostri loro esempi in cui la qualità dei dati era scarsa e hai scoperto questo fatto in modo che possa essere corretto nelle fonti. Allo stesso modo, quando chiedono un nuovo report che analizza i dati in un modo molto diverso, è possibile creare rapidamente il nuovo report utilizzando SQL per combinare i dati nelle tabelle normalizzate in questo modo molto diverso che inizialmente non era previsto. Saranno molto colpiti dal fatto che tu sia in grado di farlo rapidamente e facilmente!

Spero che questo ti aiuti a spiegare perché la normalizzazione ti sarebbe di beneficio.


Grazie mille! Una bella risposta che mi ha convinto a fare lo sforzo iniziale per ripulire questo casino. Mi chiedo se hai qualche libro raccomandato o altre fonti da leggere sulle migliori pratiche per la normalizzazione del database e altri concetti importanti?
Pedram,

3
Sono contento di essere di aiuto. Ecco un link decente sulla progettazione del database e sulla normalizzazione in generale - sqa.org.uk/e-learning/MDBS01CD/page_01.htm . Questo è abbastanza buono perché mantiene le cose semplici ed è il più facile da capire di molti esempi che ho visto. Un buon libro, soprattutto perché potresti passare a SQL Server, è "Progettazione e implementazione di database relazionali Pro SQL Server 2012 di Louis Davidson". Questo libro contiene le migliori pratiche oltre alla normalizzazione e fornisce esempi per SQL Server. Per la messa in scena, controlla "The Data Warehouse ETL Toolkit" di Ralph Kimball. In bocca al lupo!
Todd Everett,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.