Migraciones en SQL: Modificar Tablas y Agregar Campos

Clase 15 de 27Curso de Backend con Node.js: Base de Datos con PostgreSQL

Resumen

¿Cómo alterar una tabla utilizando migraciones?

El uso de migraciones en bases de datos permite realizar modificaciones y alteraciones a tablas ya existentes de manera flexible y ordenada. Aunque herramientas como Scienc proporcionan la generación inicial de modelos, estas no permiten cambios posteriores sin realizar riesgos potenciales de eliminar información. Con migraciones, es posible agregar campos y realizar modificaciones de forma segura y controlada. En este artículo, te guiaremos paso a paso sobre cómo implementar esta técnica en una base de datos existente.

¿Cómo agregar un nuevo campo con migraciones?

Para añadir un nuevo campo a una tabla existente, antes de ejecutar cualquier migración, es importante definir cómo se integrará este campo en el modelo de datos. Supongamos que queremos agregar un campo llamado role a la tabla de usuarios. El procedimiento es el siguiente:

  1. Definir el nuevo campo en el modelo:

    • Acceder al modelo del usuario.
    • Definir el campo role con las siguientes características:
      • No admite nulos.
      • Tipo de dato: string.
      • Valor por defecto: "customer".
  2. Comunicar la modificación a la tabla:

    • Generar una migración específica en la terminal que refleje este cambio.
await queryInterface.addColumn('User', 'role', {
  type: Sequelize.STRING,
  allowNull: false,
  defaultValue: 'customer'
});
  1. Ejecutar la migración:
    • Utilizar el comando para correr migraciones, asegurando que solo se ejecuten aquellas pendientes.
    • Verificar en la base de datos que la columna role fue añadida correctamente.

¿Cómo hacer un rollback de una migración?

El rollback, o revertir una migración, es fundamental para deshacer un cambio cuando es necesario. Si en algún punto es necesario quitar la columna añadida, el procedimiento es:

  1. Modificar la migración para eliminar la columna:
await queryInterface.removeColumn('User', 'role');
  1. Ejecutar la migración inversa:
    • Usar el comando adecuado para revertir cambios en la base de datos.

¿Cómo validar el nuevo campo en el esquema?

Después de realizar cambios mediante migraciones, debemos asegurar que los esquemas de validación de la aplicación reconozcan el nuevo campo. En este caso, podrías requerir que al crear o actualizar un usuario se incluya un role, ajustando las reglas de validación de la API.

¿Qué considerar al correr migraciones?

Las migraciones ayudan a mantener control y orden en las estructuras de bases de datos. Sin embargo, es esencial tener en cuenta lo siguiente:

  • Ejecución controlada: Al correr migraciones, estas solo se ejecutan desde el último punto registrado como "completado" para evitar duplicidades.
  • Verificación de cambios: Utilizar herramientas como PgAdmin para inspeccionar la base de datos y asegurar los cambios reflejados.
  • Evitar riesgos de sobrescritura: A diferencia de definiciones directas de modelos, migraciones gestionan cambios sin riesgo de pérdida de datos.

Con migraciones, es posible realizar multitud de modificaciones simultáneamente, siempre y cuando se realice con cuidado y planificación. Este conocimiento te ofrece una base sólida para continuar avanzando en el manejo de bases de datos relacionales, un próximo paso te espera: trabajar con las relaciones y cómo estos elementos se organizan e integran en torno a datos entrelazados, ampliando así la complejidad y capacidad de nuestra base de datos.