5

Si tuviera que crear un almacén de datos relacionales de proporciones bíblicas utilizando SQL Server 2008, ¿usaría claves externas para forzar la integridad de los datos o utilizaría algún otro medio?Integridad referencial en un almacén de datos relacionales. ¿Vale la pena? y cuales son las alternativas?

me gustan las claves externas, ya que sólo hay que hacerlo bien una vez, y siempre están ahí para proteger la integridad. Estaba pensando en ir a deshabilitar, cargar, habilitar la ruta.

¿Alguna idea?

Gracias de antemano.

+1

Eche un vistazo a [** similar pregunta/respuesta **] (http://stackoverflow.com/questions/2819424/in-a-star-schema-are-foreign-key-constraints-between-facts -y-dimensions-necce/2822941 # 2822941). –

+1

No estoy seguro de si debería agregar aquí o a la pregunta similar, pero ... Si la integridad es un problema, siempre puede corregir las funciones de integridad o los procedimientos almacenados que buscan hechos "huérfanos". (Filas donde las claves externas no tienen sentido). A continuación, puede limpiarlos después/durante/antes del próximo ciclo de cargas en su base de datos. – Markus

+0

/right/write .... –

Respuesta

1

¡Oh, ciertamente lo haría! Lo que debe recordar es que su base de datos es su almacén de datos, no es solo el almacén de datos para la interfaz. Esta es una diferencia sutil, pero es importante cuando comienzas a considerar el futuro. En este momento, usted (presumiblemente) es dueño de las aplicaciones de gestión, pero ¿quién puede decir que en el futuro seguirá siendo así?

Al descargar tanta validación como sea posible en la base de datos, de alguna manera prueba su aplicación en el futuro; al menos si alguien más intenta desarrollarse contra su base de datos, se cumplirán muchas de sus suposiciones.

Los inconvenientes de tener esto en el lado de base de datos es la inserción más lento, por lo que necesita para sopesar lo pesado que su aplicación está en contra de la lectura y la escritura. En el trabajo, tenemos mucha más demanda de lectura que de escritura, por lo que la integridad referencial parece obvia. Sin embargo, nuestras tablas son grandes (y están disponibles de forma gratuita para la importación), por lo que seguimos una ruta de importación de varios pasos para crear las tablas, insertar los datos, crear índices y luego crear claves externas y otras restricciones.

Espero que esto ayude!

+0

@ aCiD2, el OP está preguntando acerca de ** datawarehouse **. –

+0

@Mark, lo entiendo, pero ¿eso afecta mi awser? – ocharles

+0

@ aCiD2, no creo que las referencias a la interfaz sean relevantes para datawarehouses, los "sistemas fuente" serían más relevantes. También está la cuestión de si el proceso de ETL debe hacer cumplir la integridad referencial; normalmente, yo esperaría esto, por lo que no sería necesario aplicarlo en el esquema de DB.Pero entonces, normalmente no esperaría usar un esquema completamente normalizado como base para un datawarehouse. –

2

En primer lugar, no construiría un depósito de datos que (físicamente) se ajustara a un esquema relacional. ¿El almacén de datos propuesto está completamente normalizado, o la palabra "relacional" en la pregunta simplemente indica que se construirá en una base de datos SQL?

+0

Habrá una capa normalizada que capturará todos los detalles. Se crearán una o más capas después de eso, donde se cargarán datos de resumen para el análisis. – David

+0

Debido al tamaño potencial del almacén y al hecho de que no sabemos cómo se usarán estos datos (médicos) en el futuro, debemos almacenar los detalles en la primera capa en una forma normalizada. – David

+0

Los esquemas de estrellas raramente * significativamente * son más grandes que los mismos datos almacenados relacionalmente, esto es porque la desnormalización involucrada en la construcción de un esquema en estrella solo es aplicable a las dimensiones, que normalmente son órdenes de magnitud menores que las tablas de hechos. –

1

Sí, generalmente usaría claves externas. Eso es importante en cualquier base de datos, pero quizás especialmente si el almacén es complejo y tiene muchas tablas.

Las razones para usar restricciones de integridad en el almacén son muy similares a las de cualquier otra base de datos: minimiza el riesgo de que ingresen datos incorrectos en la base de datos; A menudo es el método más económico y eficaz de implementar tales reglas de integridad; Significa que esas restricciones están disponibles para que el optimizador mejore el rendimiento de la consulta; Las restricciones también están disponibles para las herramientas de desarrollo y los usuarios que consumen los datos y necesitan interpretar su estructura.

Cuestiones relacionadas