AnswerBun.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!

Related Questions

Como iterar un entero en python?

1  Asked on September 20, 2020 by kilex

   

419 Page Expired, laravel JS

1  Asked on September 14, 2020 by yeisson-pinilla

     

¿Cómo crear un método para modificar la contraseña en node.js?

1  Asked on September 12, 2020 by osleynin-mambell-ramos

   

Actualizar datos en SSIS

1  Asked on September 11, 2020 by guillermo-ricardo-spindola-bri

     

Falta enviar datos del input a phpmyadmin (PHP)

0  Asked on September 11, 2020 by hatori-hanso

   

¿Cómo valido si una cadena es vacía en Python?

1  Asked on September 10, 2020 by fedorqui-so-deja-de-daar

   

Envío SMS no se envía pero informa éxito en la operación

2  Asked on September 8, 2020 by briast

     

Configuracion del web.Config

1  Asked on September 5, 2020 by afar1793

         

Iniciar un fragment al pulsar una notificación

0  Asked on September 3, 2020 by lukaman

 

Eventos del ratón con Python

0  Asked on September 3, 2020 by hector-lacunza

 

Problemas con el dismiss();

1  Asked on September 2, 2020 by tony-ormaza

 

No me funciona el @media

1  Asked on August 29, 2020 by francisco

       

Array Angular – IONIC

1  Asked on August 25, 2020 by isg-lokimil

   

Ask a Question

Get help from others!

© 2022 AnswerBun.com. All rights reserved. Sites we Love: PCI Database, MenuIva, UKBizDB, Menu Kuliner, Sharing RPP