Text to SQL, es decir, la generación de consultas SQL precisas a partir de preguntas en lenguaje natural, es una interesante interfaz entre el lenguaje natural y el tratamiento de datos estructurados.
Para que este tipo de IA funcione, necesita un contexto realista: tablas, columnas, relaciones y contenido.
Aquí es exactamente donde entran en juego las bases de datos de muestras.
En este artículo, presento algunos ejemplos de bases de datos SQL de código abierto que puedes utilizar inmediatamente para llevar a cabo tus propios experimentos o para probar un modelo de texto a SQL.
Aviano DB - Sistema de alquiler de coches
Caso práctico:
Esta base de datos representa un sistema completo de alquiler de vehículos, incluidos clientes, vehículos, ubicaciones, seguros, facturas y opciones adicionales. Es ideal para entrenar uniones SQL complejas, totales, agrupaciones y funciones de fecha.
Base de datos:
La base de datos Aviano contiene tablas realistas como customer, vehicle_type, rental, fuel_option, insurance, equipment_type y muchos más. En el repositorio se incluye un ERD.
Ejemplo de mensaje de texto:
"Muéstrame todos los clientes con su nombre, categoría de vehículo, lugar de recogida y fecha de recogida".
SELECT
CONCAT_WS(',', c.first_name, c.last_name) AS 'Customer Name',
vt.name AS 'Car Type',
CONCAT_WS(',', l1.city, l1.state) AS 'Pickup Location',
r.start_date as 'Pickup Date'
FROM
rental AS r
JOIN customer AS c ON r.customer_id = c.id
JOIN vehicle_type AS vt ON r.vehicle_type_id = vt.id
JOIN location AS l1 ON r.pickup_location_id = l1.id;
Chinook DB - Medios de comunicación clásicos
Caso práctico:
Chinook es perfecto para los análisis relacionados con la música y los medios de comunicación. Contiene artistas, álbumes, pistas, géneros, clientes y ventas. Ideal para principiantes y casos de uso de inteligencia empresarial.
Base de datos:
Tablas típicas: Customer, Invoice, InvoiceLine, Track, Album, Artist.
Ejemplo de mensaje de texto:
"¿Qué cinco artistas han generado más ventas?"
SELECT
a.Name AS Artist,
SUM(il.Quantity) AS TotalSales
FROM
InvoiceLine il
JOIN Track t ON il.TrackId = t.TrackId
JOIN Album al ON t.AlbumId = al.AlbumId
JOIN Artist a ON al.ArtistId = a.ArtistId
GROUP BY a.Name
ORDER BY TotalSales DESC
LIMIT 5;
Northwind Traders - clásico para el comercio B2B
Caso práctico:
Northwind simula la organización de ventas de una empresa mayorista con productos, pedidos, proveedores y empleados. La base de datos es rica en relaciones y resulta especialmente adecuada para ejercicios de JOIN y análisis de lógica empresarial.
Base de datos:
Mesas centrales: Orders, OrderDetails, Products, Customers, Suppliers, Employees, Shippers.
Ejemplo de mensaje de texto:
"¿Qué empleados tramitaron pedidos en mayo de 1997 y cuál fue la facturación total?"
SELECT
e.FirstName || ' ' || e.LastName AS Employee,
SUM(od.UnitPrice * od.Quantity) AS TotalSales
FROM
Employees e
JOIN Orders o ON e.EmployeeID = o.EmployeeID
JOIN OrderDetails od ON o.OrderID = od.OrderID
WHERE
o.OrderDate BETWEEN '1997-05-01' AND '1997-05-31'
GROUP BY Employee;
Base de datos de pizzas
Caso práctico:
Base de datos minimalista para pedidos de pizza. Ideal para demostraciones, pruebas de rendimiento o configuración de un chatbot inicial para restaurantes.
Base de datos:
Mesas como pizzas, orders, customers, toppings, order_details.
Ejemplo de mensaje de texto:
"¿Qué pizzas se pidieron con más frecuencia el mes pasado?"
SELECT
p.name,
COUNT(od.pizza_id) AS TimesOrdered
FROM
order_details od
JOIN pizzas p ON od.pizza_id = p.id
JOIN orders o ON od.order_id = o.id
WHERE
o.order_date >= DATE('now', '-1 month')
GROUP BY p.name
ORDER BY TimesOrdered DESC;
Base de datos de empleados
Propósito:
Suministro de una versión modificada de la base de datos de demostración PostgreSQL "empleados".
Contenido:
- Archivos SQL y Java para importación y acceso.
- La estructura y los datos corresponden en parte a la conocida base de datos MySQL "empleados".
- Concéntrese en la correcta concesión de licencias y atribución de las fuentes originales.
Características especiales:
- Licencia: Licencia Creative Commons Atribución-Compartir bajo la misma licencia 3.0 Unported
- Originalmente basado en plantillas de otros repositorios, con modificaciones.
- No se centra en una interfaz web o API, sino únicamente en el suministro de datos y estructuras.
Análisis de datos de un aeropuerto
Proyecto de aprendizaje de SQL, MySQL y análisis de datos basado en un conjunto de datos aeroportuarios.
Contenido:
- Volcados SQL (esquema y datos) de un registro de datos aeroportuarios modificado ("ffdb").
- Instrucciones de instalación con
mysqlymysqlsh. - Preparación para Analytics & HeatWave-ML de Oracle.
Características especiales:
- Datos procedentes de la flughafenendb.cctraducido al inglés.
- Contiene archivos SQL de gran tamaño (más de 90 MB).
- Integración con HeatWave/ML documentada.
- Licencia no indicada explícitamente, pero referencias a fuentes originales disponibles.
Análisis de los nombres de bebés en EE.UU. a escala nacional y estatal
Visualización y análisis de los nombres de bebés en EE.UU. a escala nacional y estatal.
Características especiales:
- Fuente: datos.gov
- Contiene información básica sobre la importación de datos.
- Licencia: Licencia MIT
Simulación de una tienda web con 1000 clientes, 2000 pedidos y 1000 productos
Suministro de un conjunto de datos PostgreSQL para simular una tienda web.
JannikArndt/PostgreSQLBaseDeDatosDeMuestra
Contenido:
- Esquema con:
- 1000 clientes
- 2000 pedidos
- 1000 productos con un total de 17.730 artículos
src/contiene scripts para la generación de BD.data/contiene volcado para recuperación medianterestore.sh.
Conclusión
Existen algunas bases de datos SQL de código abierto que pueden utilizarse para experimentar y probar modelos de conversión de texto a SQL.
Si hay otras bases de datos SQL de libre acceso que le gustaría que incluyéramos en esta lista, háganoslo saber en sus comentarios.
