Eliminar una columna de una tabla en producción

8

Tenemos una situación en la que necesitamos cambiar la relación entre 2 tablas de m: 1 a m: n .

Entonces, necesitamos crear una tabla de referencias cruzadas entre esas dos tablas.

Después de migrar todos los datos existentes de la tabla "secundaria" a la tabla de referencias cruzadas, ¿sería una mala idea eliminar la columna de clave externa original en la tabla secundaria?

Si lo dejamos allí, básicamente tenemos una deuda técnica. Pero no soy un dba y no entiendo bien las implicaciones de eliminar una columna de una tabla. (Sé que es posible, pero ¿es una mala idea? ¿Mi base de datos me odiará por eso?)

Gracias

onefootswill
fuente

Respuestas:

5

Sin conocer toda la estructura de sus tablas, estoy limitado en mi consejo. Sin embargo, no, su base de datos no trazará su desaparición si elimina una columna en las siguientes circunstancias (de ninguna manera exhaustiva):

  1. Todavía usa una clave de base de datos para asignar sus dimensiones.
  2. Sus nuevos índices en esta nueva tabla de dimensiones están cubriendo adecuadamente los índices cuando deberían estar.
  3. Usted administra este número de índices para no sobrecargar Inserciones / Actualizaciones

Su nuevo diseño tiene tablas de dos dimensiones y una tabla de hechos

  • Es por eso que pasó de m: 1 a m: n con una tabla de "referencia cruzada". A esto le llamamos otra dimensión.

El diseño realmente implementó la Normalización para lograr esto

  • Al eliminar una dependencia, su equipo estará mejor equipado para recuperar Hechos que pueden transformar la forma en que se procesan sus datos de una manera más significativa.

Nota sobre dimensiones y hechos

  • Dimensiones para el contexto descriptivo

Las dimensiones proporcionan el contexto de "quién, qué, dónde, cuándo, por qué y cómo" que rodea un evento de proceso de negocio. Las tablas de dimensiones contienen los atributos descriptivos utilizados por las aplicaciones de BI para filtrar y agrupar los hechos. Con el grano de una tabla de hechos firmemente en mente, se pueden identificar todas las dimensiones posibles.

Siempre que sea posible, una dimensión debe tener un solo valor cuando se asocia con una fila de hechos determinada . Las tablas de dimensiones a veces se llaman el "alma" del almacén de datos porque contienen los puntos de entrada y las etiquetas descriptivas que permiten aprovechar el sistema DW / BI para el análisis empresarial. Se dedica una cantidad desproporcionada de esfuerzo al gobierno de datos y al desarrollo de tablas de dimensiones porque son los impulsores de la experiencia de BI del usuario.

  • Hechos para las mediciones

Los hechos son las medidas que resultan de un evento de proceso de negocio y casi siempre son numéricos. Una sola fila de la tabla de hechos tiene una relación uno a uno con un evento de medición como se describe en el grano de la tabla de hechos . Por lo tanto, una tabla de hechos corresponde a un evento físico observable, y no a las demandas de un informe particular . Dentro de una tabla de hechos , solo se permiten hechos consistentes con el grano declarado . Por ejemplo, en una transacción de venta minorista, la cantidad de un producto vendido y su precio extendido son buenos hechos, mientras que el salario del gerente de la tienda no está permitido.

Técnicas de modelado dimensional de Kimball

Mi sugerencia es que el equipo de diseño debe saber que hacer cumplir las reglas en la base de datos es lo mejor, a menos que perjudique el rendimiento. Sin embargo, no sé el tamaño o la cuantificación de sus declaraciones DDL para responder completamente a esto.

Pero tenga la seguridad de que esto debería ser un cambio positivo en su sistema, ya que ahora SQL Server no tendrá que pasar por todos esos datos adicionales para recuperar lo que realmente importó.

clifton_h
fuente
Gracias por la respuesta integral. Es bueno saber que la base de datos podrá manejarlo. Parece una operación mucho más traumática que eliminar filas. Tendré los índices, etc. en primer plano cuando planifique el script para realizar este cambio. Por supuesto, tendremos copias de seguridad y una estrategia de reversión.
onefootswill
5

Sé que es posible, pero ¿es una mala idea? ¿Mi base de datos me odiará por eso?

No puedo hablar por tu base de datos pero te odiaría por ello :-)

La columna heredada contendrá datos redundantes después del cambio. Esto podría generar datos conflictivos si la columna anterior y la nueva tabla xref no se mantienen consistentemente entre sí. Considere que los desarrolladores que no están familiarizados con la deuda técnica podrían corromper lógicamente la base de datos.

Me cuesta pensar en una razón por la cual uno no debería eliminar la columna y la relación heredadas. Eso también asegurará que todo el código dependiente se haya cambiado correctamente.

Dan Guzman
fuente