TransWikia.com

Extender la columnas de una BD con registros

Stack Overflow en español Asked by Grem on October 16, 2020

Teniendo en cuenta que las cosas cambian conforme pasa el tiempo, una de las dudas más grandes que recorre mi cabeza en este momento es: qué debería hacer si deseo cambiar la lógica de mi negocio para guardar más información sobre una entidad especifica, ya que esta deberá ser persistida y ya existen registros posteriores: ¿Qué sucede con los registros ya existentes?

La todos los nuevos campos deberán permitir null para que los registros anteriores no rompan la bd?

Y algo más controversial: que hay si necesito eliminar una de las columnas? Debo ir directamente a la base de datos, antes de hacer deploy de las nuevas características, y ejecutar una query que elimite todos esos registros para no causar problemas?

One Answer

Es común que sistemas que ya están en producción sufran de actualizaciones, tanto por mejoras/evolución del software mismo, como por cambios en el funcionamiento de las empresas/industrias y el marco legal que las regula.

Con esto, las estructuras de base de datos evolucionan también. La manera de actualizar/evolucionar una estructura de base de datos varía según el motor de base de datos y las herramientas que estén a tu disposición.

Si hablamos de bases de datos relacionales, más allá de los mecanismos utilizados, al final, será sentencias DDL las que cambien las estructuras.

Cuando se crean columnas nuevas, se pueden tomar varias estrategias:

  • Crear las columnas nullable, de manera que no haya conflicto con registros que ya existan en la base de datos.
  • Crear columnas nuevas con un valor default y el atributo not null establecido.
  • Crear columnas nuevas como nullable, luego realizar alguna sentencia para derivar el valor que deben tener y posteriormente cambiar la definición de la columna como not null.

Como parte de la evolución, también es común que se creen tablas nuevas, se eliminen columnas que ya son obsoletas en el nuevo modelo y se eliminen también tablas por la misma razón.

Acá también se verán casos donde, luego de crear una tabla nueva, se voltea información desde una tabla existente para llenarla y luego se elimina la tabla existente. Esto es común cuando la estructura ha sufrido procesos de re-ingeniería.

Dependiendo de las capacidades del motor de base de datos, estas operaciones podrían llevarse a cabo en el contexto de una transacción, con lo cual, si algo falla durante la evolución de las estructuras, aplicas un rollback y dejas todo como si nada hubiese pasado.

Si el motor no lo permite, la única manera de ir a la segura es realizar una copia o copia de seguridad y si algo falla, restaurar desde la copia.

Correct answer by jachguate on October 16, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP