Estar atascado con un esquema de base de datos heredado que ya no refleja su modelo de datos es la pesadilla de todo desarrollador. Sin embargo, con todo lo que se habla sobre el código de refactorización para la mantenibilidad, no he escuchado mucho sobre la refactorización de esquemas de bases de datos obsoletos.Consejos para refactorizar un esquema de base de datos obsoleto
¿Cuáles son algunos consejos sobre cómo hacer la transición a un mejor esquema sin romper todo el código que se basa en el anterior? Propondré un problema específico que tengo que ilustrar sobre mi punto, pero siéntanse libres de dar consejos sobre otras técnicas que han demostrado ser útiles; es probable que también sean útiles.
Mi ejemplo:
Mi empresa recibe y envía sus productos. Ahora, un recibo del producto y un envío del producto tienen datos muy diferentes asociados a ellos, por lo que los diseñadores originales de la base de datos crearon una tabla separada para los recibos y los envíos.
En mi primer año de trabajo con este sistema, me he dado cuenta de que el esquema actual no tiene sentido. Después de todo, tanto un recibo como un envío son básicamente una transacción, cada uno implica cambiar la cantidad de un producto, en el fondo solo el signo +/- es diferente. De hecho, con frecuencia necesitamos encontrar la cantidad total que el producto ha cambiado durante un período de tiempo, un problema para el cual este diseño es francamente intratable.
Obviamente, el diseño apropiado sería tener una sola tabla de transacciones con el ID como una clave externa de una tabla ReceiptInfo o una tabla ShipmentInfo. Desafortunadamente, el esquema incorrecto ya ha estado en producción por algunos años y tiene cientos de procedimientos almacenados y miles de líneas de código perdidas. ¿Cómo puedo hacer la transición del esquema para que funcione correctamente?
¿Hay algo específico para MySQL, por ejemplo? Todo lo que veo son gráficos ... no hay instrucciones reales sobre cómo, por ejemplo, eliminar una tabla de búsqueda. –
En su mayoría es RDBMS-agnóstico. El libro en sí contiene las instrucciones reales. Hay una refactorización para * agregar * una tabla de búsqueda, no se puede ver una para eliminarla :) http://databaserefactoring.com/AddLookupTable.html –