¿Normalizando una base de datos sin acceso a los datos de origen?

8

Comencé un nuevo rol que se ocupa de una gran cantidad de datos relacionados. Nuestra fuente de todos estos datos son varios volcados de Excel extraídos de bases de datos a las que no tenemos acceso. La persona anterior que desempeñaba esta función utilizó una docena de archivos de Excel para recopilar estos archivos de datos, manipularlos y crear informes.

He comenzado a mover los volcados a una base de datos de Access. He notado que muchos de los datos de Excel están relacionados y probablemente deberían normalizarse. Lo que he estado haciendo actualmente es crear una tabla para cada volcado de datos, e importarlos a Access, y usar una serie de consultas para replicar las docenas de manipulaciones de datos e informes.

¿Todavía hay beneficios en la normalización de datos donde mi única fuente son los volcados de Excel fuera de un almacén?

¿Cómo normalizaría los datos, cuando no tengo la capacidad de cambiar el formato de cómo me envían los volcados?

Además, mi plan (según el presupuesto) es pasar de Access a una base de datos MS SQL.

pedram
fuente
44
Normalmente, NO desea normalizar los datos que no son transaccionales y solo se utilizarán para generar informes. Si los datos salen de un almacén de datos, ya hicieron el trabajo duro por usted. Simplemente cárguelo en Access y consulte.
HardCode
Solo para aclarar, ¿los volcados de Excel contienen los datos sin procesar, o son datos agregados / informados previamente? ¿La fuente de datos proviene de un proveedor de exportación de algún tipo (es decir, puede comunicarse con quien diseñó las estructuras de datos involucradas)?
Jon Seigel
Los volcados de Excel provienen del proveedor o de nuestro propio almacén de datos, por lo que son datos sin procesar o datos sin procesar con una cantidad mínima de transformaciones (por ejemplo, 0/1 cambios a Sí / No, o Código de cuenta asignado a la Descripción de la cuenta). Puedo comunicarme con aquellos que diseñaron las estructuras de datos pero no tengo voz en cómo están diseñadas. Para dar un poco de contexto, no soy un DBA, pero estoy tratando de encontrar la mejor solución para nuestro equipo dadas las limitaciones presupuestarias y políticas.
pedram

Respuestas:

6

Sí, hay beneficios significativos para la normalización de datos si está dispuesto a hacer el trabajo para lograrlo y mantenerlo. Los dos beneficios fundamentales para la normalización son:

  • Integridad de los datos
  • Consulta de flexibilidad

El enfoque simple para la normalización es crear una tabla para cada persona, lugar, cosa, concepto o evento. Al hacer esto, tiene cada característica de cada persona, lugar, cosa, concepto o evento de interés para usted en un único lugar en la base de datos. El beneficio de la integridad de los datos se logra cuando inserta y actualiza los datos. Debido a que se ha normalizado, no tiene copias redundantes de la misma característica en muchos lugares de la base de datos, cada uno con un valor diferente, que debe recordar actualizar y mantener sincronizados. En segundo lugar, solo tiene un lugar en la base de datos para programar las comprobaciones al insertar o actualizar datos para asegurarse de que los datos sean válidos. Como sus datos provienen de muchas hojas de cálculo de Excel, normalizar sus datos le brinda la oportunidad de implementar verificaciones de integridad de datos en la carga para asegurarse de que su análisis se base en datos precisos. El beneficio de la flexibilidad de la consulta se logra cuando desea leer y analizar los datos. Debido a que ha normalizado los datos, puede conectar las tablas de manera flexible en función de la pregunta sobre los datos que desea responder, incluido solo lo que necesita para responder la pregunta específica. En segundo lugar, esto permite que la base de datos devuelva las respuestas a sus preguntas mucho más rápido que si tuviera que examinar todos los datos, incluidos los datos que no son relevantes para su pregunta, en sus tablas no normalizadas. Debido a que ha normalizado los datos, puede conectar las tablas de manera flexible en función de la pregunta sobre los datos que desea responder, incluido solo lo que necesita para responder la pregunta específica. En segundo lugar, esto permite que la base de datos devuelva las respuestas a sus preguntas mucho más rápido que si tuviera que examinar todos los datos, incluidos los datos que no son relevantes para su pregunta, en sus tablas no normalizadas. Debido a que ha normalizado los datos, puede conectar las tablas de manera flexible en función de la pregunta sobre los datos que desea responder, incluido solo lo que necesita para responder la pregunta específica. En segundo lugar, esto permite que la base de datos devuelva las respuestas a sus preguntas mucho más rápido que si tuviera que examinar todos los datos, incluidos los datos que no son relevantes para su pregunta, en sus tablas no normalizadas.

Access es un DBMS simplificado e incluye un procesador SQL básico que le permite escribir consultas y así aprovechar los beneficios de los datos normalizados. Si finalmente va a pasar a SQL Server, que es un DBMS con todas las funciones, la normalización de sus datos ahora facilitará la transición y le permitirá aprovechar todas las capacidades de SQL Server y su muy rica implementación de SQL.

Como mencioné al principio, para lograr estos beneficios, debe estar dispuesto a hacer la programación inicial para traducir los datos provenientes de sus diversos volcados de Excel y asignar las filas y columnas de esas hojas de cálculo a sus tablas normalizadas. Este no es un ejercicio trivial, pero se puede hacer con la programación de Access. Un enfoque sería crear tablas que replicaran los datos como en el origen y cargar los datos en ellos. Estos se conocen como etapamesas. Una vez que tenga los datos no normalizados en las tablas de Access, puede escribir más fácilmente el código de acceso usando SQL para extraer los datos de esas tablas de etapas, normalizarlos, identificar problemas de calidad de datos (digamos la misma característica en dos volcados de Excel diferentes que deberían tener el mismo valor pero no) y cárguelo en sus tablas normalizadas. Este es el método común para normalizar datos provenientes de una fuente no normalizada muy común en almacenes de datos basados ​​en áreas temáticas.

Sin embargo, encontrará que este nivel adicional de esfuerzo vale la pena una vez que tenga datos normalizados de alta calidad en su base de datos de acceso. Usted informa que los consumidores verán que usted es un verdadero profesional de los datos cuando les muestre ejemplos en los que la calidad de los datos era deficiente y descubrió ese hecho para poder corregirlo en las fuentes. Del mismo modo, cuando solicitan un nuevo informe que analice los datos de una manera muy diferente, puede crear rápidamente el nuevo informe utilizando SQL para combinar los datos en las tablas normalizadas de esta manera muy diferente que no se había previsto originalmente. ¡Quedarán muy impresionados de que pueda hacerlo de manera rápida y fácil!

Espero que esto ayude a explicar por qué la normalización sería beneficiosa para usted.

Todd Everett
fuente
¡Muchas gracias! Una hermosa respuesta que me ha convencido de hacer un esfuerzo inicial para limpiar este desastre. Me pregunto si tiene libros recomendados u otras fuentes para leer sobre las mejores prácticas para la normalización de la base de datos y otros conceptos importantes.
pedram
3
Me alegro de poder ser de ayuda. Aquí hay un enlace decente sobre el diseño y la normalización de la base de datos en general: sqa.org.uk/e-learning/MDBS01CD/page_01.htm . Esto es bastante bueno porque mantiene las cosas simples y es el más fácil de entender de muchos ejemplos que he visto. Un buen libro, especialmente porque puede pasar a SQL Server, es el "Diseño e implementación de bases de datos relacionales Pro SQL Server 2012 de Louis Davidson". Este libro contiene las mejores prácticas además de la normalización y ofrece ejemplos para SQL Server. Para la puesta en escena, consulte "The Data Warehouse ETL Toolkit" de Ralph Kimball. ¡Buena suerte!
Todd Everett