Resumen

Definir estructuras de tablas en bases de datos SQL es una de las tareas más frecuentes en la ingeniería de datos. Ya sea en Postgres, MySQL, Oracle o MariaDB, estas tablas albergan datos transaccionales y operativos que sostienen los procesos de cualquier empresa. La buena noticia es que herramientas como GitHub Copilot, respaldadas por Large Language Models (LLM), permiten optimizar este trabajo que a menudo resulta tedioso y repetitivo.

¿Cómo generar un modelo de datos completo con un solo comentario?

El punto de partida es sencillo: trabajar desde Visual Studio Code con GitHub Copilot activado. Para indicarle al modelo qué motor de base de datos se está utilizando, basta con escribir un comentario SQL — que en este lenguaje se escribe con dos guiones (--) — especificando, por ejemplo, SQL Postgres [0:55].

A partir de ahí, se le solicita que genere un modelo de datos con tablas específicas. En el ejemplo práctico se le pidieron cuatro tablas:

  • Customer: con primary key, first name, last name, email, teléfono, ciudad y estado.
  • Orders: tabla de pedidos vinculada al cliente.
  • Product: catálogo de productos.
  • Orders Detail: detalle de cada orden, conectando productos con pedidos.

Copilot, gracias a su capacidad de comprensión del lenguaje natural, deduce automáticamente las relaciones entre tablas y propone las columnas más habituales para cada una. Solo fue necesario indicar que se utilizaran foreign keys para garantizar la integridad referencial entre ellas [1:25].

El resultado es un esquema DDL (Data Definition Language), es decir, un conjunto de instrucciones CREATE TABLE que define la estructura completa de un modelo de ventas hacia clientes.

¿Qué más se puede hacer después de crear las tablas?

Una vez generado el modelo base, las posibilidades se amplían considerablemente.

¿Cómo crear índices compuestos para optimizar consultas?

Se le puede pedir a Copilot que cree índices compuestos para mejorar la velocidad de las consultas. En el ejemplo, se generó un índice sobre la tabla Orders combinando CustomerID y OrderDate [3:05]. Esto optimiza búsquedas analíticas frecuentes, como consultar ventas por periodo de tiempo.

Es importante tener en cuenta que el modelo no conoce el contexto real de las consultas más comunes en tu base de datos. Ofrece sugerencias basadas en patrones generales, pero la decisión final sobre qué indexar siempre depende del ingeniero.

¿Cómo modificar tablas existentes con ALTER TABLE?

También es posible solicitar modificaciones. Por ejemplo, agregar columnas como CreatedAt y UpdatedAt a la tabla OrdersDetail [3:50]. Copilot genera las sentencias ALTER TABLE correspondientes, incluyendo valores por defecto como la fecha actual.

¿Cómo crear tablas con columnas deducidas por contexto?

Un aspecto poderoso es la capacidad de Copilot para inferir columnas a partir del nombre de la tabla. Al solicitar una tabla ProductCategory sin especificar columnas, el modelo dedujo que debía contener ProductID y CategoryID, funcionando como una tabla transitiva que relaciona productos con categorías mediante foreign keys [5:30].

Adicionalmente, se pueden ejecutar operaciones como crear copias de seguridad de tablas (CREATE TABLE ... AS) o eliminarlas con DROP TABLE.

¿Por qué es importante gestionar el contexto del LLM?

Un detalle práctico relevante es la ventana de contexto del LLM. Estos modelos tienen un límite de tokens — las unidades de texto que pueden procesar en una sola interacción. Por eso, se recomienda limpiar el código ya ejecutado del editor antes de continuar generando nuevas instrucciones [5:00]. Esto reduce el ruido y mejora la calidad de las sugerencias posteriores.

¿Qué herramientas alternativas puedes usar para crear modelos DDL?

Todo lo que se logra con GitHub Copilot también funciona con otros modelos entrenados para escribir código: ChatGPT, Bing Chat, Bard, Claude u Open Assistant [8:10]. La diferencia está en la integración — Copilot trabaja directamente dentro del IDE — pero la capacidad de generar sentencias DDL es compartida por prácticamente todos los LLM actuales.

Como reto, intenta crear un modelo de datos completamente distinto utilizando alguna de estas herramientas alternativas y comparte tus resultados en los comentarios.